Open In Colab

LICENSING NOTICE¶

Note that all users who use Vital DB, an open biosignal dataset, must agree to the Data Use Agreement below. If you do not agree, please close this window. The Data Use Agreement is available here: https://vitaldb.net/dataset/#h.vcpgs1yemdb5

This is the development version of the project code¶

For the Project Draft submission see the DL4H_Team_24_Project_Draft.ipynb notebook in the project repository.

Project repository¶

The project repository can be found at: https://github.com/abarrie2/cs598-dlh-project

Introduction¶

This project aims to reproduce findings from the paper titled "Predicting intraoperative hypotension using deep learning with waveforms of arterial blood pressure, electroencephalogram, and electrocardiogram: Retrospective study" by Jo Y-Y et al. (2022) [1]. This study introduces a deep learning model that predicts intraoperative hypotension (IOH) events before they occur, utilizing a combination of arterial blood pressure (ABP), electroencephalogram (EEG), and electrocardiogram (ECG) signals.

Background of the Problem¶

Intraoperative hypotension (IOH) is a common and significant surgical complication defined by a mean arterial pressure drop below 65 mmHg. It is associated with increased risks of myocardial infarction, acute kidney injury, and heightened postoperative mortality. Effective prediction and timely intervention can substantially enhance patient outcomes.

Evolution of IOH Prediction¶

Initial attempts to predict IOH primarily used arterial blood pressure (ABP) waveforms. A foundational study by Hatib F et al. (2018) titled "Machine-learning Algorithm to Predict Hypotension Based on High-fidelity Arterial Pressure Waveform Analysis" [2] showed that machine learning could forecast IOH events using ABP with reasonable accuracy. This finding spurred further research into utilizing various physiological signals for IOH prediction.

Subsequent advancements included the development of the Acumen™ hypotension prediction index, which was studied in "AcumenTM hypotension prediction index guidance for prevention and treatment of hypotension in noncardiac surgery: a prospective, single-arm, multicenter trial" by Bao X et al. (2024) [3]. This trial integrated a hypotension prediction index into blood pressure monitoring equipment, demonstrating its effectiveness in reducing the number and duration of IOH events during surgeries. Further study is needed to determine whether this resultant reduction in IOH events transalates into improved postoperative patient outcomes.

Current Study¶

Building on these advancements, the paper by Jo Y-Y et al. (2022) proposes a deep learning approach that enhances prediction accuracy by incorporating EEG and ECG signals along with ABP. This multi-modal method, evaluated over prediction windows of 3, 5, 10, and 15 minutes, aims to provide a comprehensive physiological profile that could predict IOH more accurately and earlier. Their results indicate that the combination of ABP and EEG significantly improves performance metrics such as AUROC and AUPRC, outperforming models that use fewer signals or different combinations.

Our project seeks to reproduce and verify Jo Y-Y et al.'s results to assess whether this integrated approach can indeed improve IOH prediction accuracy, thereby potentially enhancing surgical safety and patient outcomes.

Scope of Reproducibility:¶

The original paper investigated the following hypotheses:

  1. Hypothesis 1: A model using ABP and ECG will outperform a model using ABP alone in predicting IOH.
  2. Hypothesis 2: A model using ABP and EEG will outperform a model using ABP alone in predicting IOH.
  3. Hypothesis 3: A model using ABP, EEG, and ECG will outperform a model using ABP alone in predicting IOH.

Results were compared using AUROC and AUPRC scores. Based on the results described in the original paper, we expect that Hypothesis 2 will be confirmed, and that Hypotheses 1 and 3 will not be confirmed.

In order to perform the corresponding experiments, we will implement a CNN-based model that can be configured to train and infer using the following four model variations:

  1. ABP data alone
  2. ABP and ECG data
  3. ABP and EEG data
  4. ABP, ECG, and EEG data

We will measure the performance of these configurations using the same AUROC and AUPRC metrics as used in the original paper. To test hypothesis 1 we will compare the AUROC and AUPRC measures between model variation 1 and model variation 2. To test hypothesis 2 we will compare the AUROC and AUPRC measures between model variation 1 and model variation 3. To test hypothesis 3 we will compare the AUROC and AUPRC measures between model variation 1 and model variation 4. For all of the above measures and experiment combinations, we will operate multiple experiments where the time-to-IOH event prediction will use the following prediction windows:

  1. 3 minutes before event
  2. 5 minutes before event
  3. 10 minutes before event
  4. 15 minutes before event

In the event that we are compute-bound, we will prioritize the 3-minute prediction window experiments as they are the most relevant to the original paper's findings.

The predictive power of ABP, ECG and ABP + ECG models at 3-, 5-, 10- and 15-minute prediction windows: Predictive power of ABP, ECG and ABP + ECG models at 3-, 5-, 10- and 15-minute prediction windows

Modifications made for demo mode¶

In order to demonstrate the functioning of the code in a short (ie, <8 minute limit) the following options and modifications were used:

  1. MAX_CASES was set to 20. The total number of cases to be used in the full training set is 3296, but the smaller numbers allows demonstration of each section of the pipeline.
  2. vitaldb_cache is prepopulated in Google Colab. The cache file is approx. 800MB and contains the raw and mini-fied copies of the source dataset and is downloaded from Google Drive. This is much faster than using the vitaldb API, but is again only a fraction of the data. The full dataset can be downloaded with the API or prepopulated by following the instructions in the "Bulk Data Download" section below.
  3. max_epochs is set to 6. With the small dataset, training is fast and shows the decreasing training and validation losses. In the full model run, max_epochs will be set to 100. In both cases early stopping is enabled and will stop training if the validation losses stop decreasing for five consecutive epochs.
  4. Only the "ABP + EEG" combination will be run. In the final report, additional combinations will be run, as discussed later.
  5. Only the 3-minute prediction window will be run. In the final report, additional prediction windows (5, 10 and 15 minutes) will be run, as discussed later.
  6. No ablations are run in the demo. These will be completed for the final report.

Methodology¶

Methodology from Final Rubrik¶

  • Environment
    • Python version
    • Dependencies/packages needed
  • Data
    • Data download instruction
    • Data descriptions with helpful charts and visualizations
    • Preprocessing code + command
  • Model
    • Citation to the original paper
    • Link to the original paper’s repo (if applicable)
    • Model descriptions
    • Implementation code
    • Pretrained model (if applicable)
  • Training
    • Hyperparams
      • Report at least 3 types of hyperparameters such as learning rate, batch size, hidden size, dropout
    • Computational requirements
      • Report at least 3 types of requirements such as type of hardware, average runtime for each epoch, total number of trials, GPU hrs used, # training epochs
      • Training code
  • Evaluation
    • Metrics descriptions
    • Evaluation code

The methodology section is composed of the following subsections: Environment, Data and Model.

  • Environment: This section describes the setup of the environment, including the installation of necessary libraries and the configuration of the runtime environment.
  • Data: This section describes the dataset used in the study, including its collection and preprocessing.
    • Data Collection: This section describes the process of downloading the dataset from VitalDB and populating the local data cache.
    • Data Preprocessing: This section describes the preprocessing steps applied to the dataset, including data selection, data cleaning, and feature extraction.
  • Model: This section describes the deep learning model used in the study, including its implementation, training, and evaluation.
    • Model Implementation: This section describes the implementation of the deep learning model, including the architecture, loss function, and optimization algorithm.
    • Model Training: This section describes the training process, including the training loop, hyperparameters, and training strategy.
    • Model Evaluation: This section describes the evaluation process, including the metrics used, the evaluation strategy, and the results obtained.

Environment¶

Create environment¶

The environment setup differs based on whether you are running the code on a local machine or on Google Colab. The following sections provide instructions for setting up the environment in each case.

Local machine¶

Create conda environment for the project using the environment.yml file:

conda env create --prefix .envs/dlh-team24 -f environment.yml

Activate the environment with:

conda activate .envs/dlh-team24

Google Colab¶

The following code snippet installs the required packages and downloads the necessary files in a Google Colab environment:

In [1]:
# Google Colab environments have a `/content` directory. Use this as a proxy for running Colab-only code
COLAB_ENV = "google.colab" in str(get_ipython())
if COLAB_ENV:
    #install vitaldb
    %pip install vitaldb

    # Executing in Colab therefore download cached preprocessed data.
    # TODO: Integrate this with the setup local cache data section below.
    # Check for file existence before overwriting.
    import gdown
    gdown.download(id="15b5Nfhgj3McSO2GmkVUKkhSSxQXX14hJ", output="vitaldb_cache.tgz")
    !tar -zxf vitaldb_cache.tgz

    # Download sqi_filter.csv from github repo
    !wget https://raw.githubusercontent.com/abarrie2/cs598-dlh-project/main/sqi_filter.csv

All other required packages are already installed in the Google Colab environment.

Load environment¶

In [2]:
# Import packages
import os
import random
import sys
import uuid
import copy
from collections import defaultdict

from timeit import default_timer as timer

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.manifold import TSNE
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report, roc_auc_score, precision_recall_curve, auc, confusion_matrix
from sklearn.metrics import RocCurveDisplay, PrecisionRecallDisplay, average_precision_score
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
import torch
from torch.utils.data import Dataset
import vitaldb
import h5py

import torch.nn as nn
import torch.nn.functional as F
from tqdm import tqdm
from datetime import datetime

Set random seeds to generate consistent results:

In [3]:
RANDOM_SEED = 42

def reset_random_state():
    random.seed(RANDOM_SEED)
    np.random.seed(RANDOM_SEED)
    torch.manual_seed(RANDOM_SEED)
    if torch.cuda.is_available():
        torch.cuda.manual_seed(RANDOM_SEED)
        torch.cuda.manual_seed_all(RANDOM_SEED)
        torch.backends.cudnn.deterministic = True
        torch.backends.cudnn.benchmark = False
    os.environ["PYTHONHASHSEED"] = str(RANDOM_SEED)
    
reset_random_state()

Set device to GPU or MPS if available

In [4]:
device = torch.device("cuda" if torch.cuda.is_available() else "mps" if (torch.backends.mps.is_available() and torch.backends.mps.is_built()) else "cpu")
print(f"Using device: {device}")
Using device: mps

Define class to print to console and simultaneously save to file:

In [5]:
class ForkedStdout:
    def __init__(self, file_path):
        self.file = open(file_path, 'w')
        self.stdout = sys.stdout

    def write(self, message):
        self.stdout.write(message)
        self.file.write(message)

    def flush(self):
        self.stdout.flush()
        self.file.flush()

    def __enter__(self):
        sys.stdout = self

    def __exit__(self, exc_type, exc_val, exc_tb):
        sys.stdout = self.stdout
        self.file.close()

Data¶

Data Description¶

Source¶

Data for this project is sourced from the open biosignal VitalDB dataset as described in "VitalDB, a high-fidelity multi-parameter vital signs database in surgical patients" by Lee H-C et al. (2022) [4], which contains perioperative vital signs and numerical data from 6,388 cases of non-cardiac (general, thoracic, urological, and gynecological) surgery patients who underwent routine or emergency surgery at Seoul National University Hospital between 2016 and 2017. The dataset includes ABP, ECG, and EEG signals, as well as other physiological data. The dataset is available through an API and Python library, and at PhysioNet: https://physionet.org/content/vitaldb/1.0.0/

Statistics¶

Characteristics of the dataset: | Characteristic | Value | Details | |-----------------------|-----------------------------|------------------------| | Total number of cases | 6,388 | | | Sex (male) | 3,243 (50.8%) | | | Age (years) | 59 | Range: 48-68 | | Height (cm) | 162 | Range: 156-169 | | Weight (kg) | 61 | Range: 53-69 | | Tram-Rac 4A tracks | 6,355 (99.5%) | Sampling rate: 500Hz | | BIS Vista tracks | 5,566 (87.1%) | Sampling rate: 128Hz | | Case duration (min) | 189 | Range: 27-1041 |

Labels are only known after processing the data. In the original paper, there were an average of 1.6 IOH events per case and 5.7 non-events per case so we expect approximately 10,221 IOH events and 364,116 non-events in the dataset.

Data Processing¶

Data will be processed as follows:

  1. Load the dataset from VitalDB, or from a local cache if previously downloaded.
  2. Apply the inclusion and exclusion selection criteria to filter the dataset according to surgery metadata.
  3. Generate a minified dataset by discarding all tracks except ABP, ECG, and EEG.
  4. Preprocess the data by applying band-pass and z-score normalization to the ECG and EEG signals, and filtering out ABP signals below a Signal Quality Index (SQI) threshold.
  5. Generate event and non-event samples by extracting 60-second segments around IOH events and non-events.
  6. Split the dataset into training, validation, and test sets with a 6:1:3 ratio, ensuring that samples from a single case are not split across different sets to avoid data leakage.

Set Up Local Data Caches¶

VitalDB data is static, so local copies can be stored and reused to avoid expensive downloads and to speed up data processing.

The default directory defined below is in the project .gitignore file. If this is modified, the new directory should also be added to the project .gitignore.

In [6]:
VITALDB_CACHE = './vitaldb_cache'
VITAL_ALL = f"{VITALDB_CACHE}/vital_all"
VITAL_MINI = f"{VITALDB_CACHE}/vital_mini"
VITAL_METADATA = f"{VITALDB_CACHE}/metadata"
VITAL_MODELS = f"{VITALDB_CACHE}/models"
VITAL_RUNS = f"{VITALDB_CACHE}/runs"
VITAL_PREPROCESS_SCRATCH = f"{VITALDB_CACHE}/data_scratch"
VITAL_EXTRACTED_SEGMENTS = f"{VITALDB_CACHE}/segments"
In [7]:
TRACK_CACHE = None
SEGMENT_CACHE = None

# when USE_MEMORY_CACHING is enabled, track data will be persisted in an in-memory cache. Not useful once we have already pre-extracted all event segments
# DON'T USE: Stores items in memory that are later not used. Causes OOM on segment extraction.
USE_MEMORY_CACHING = False

# When RESET_CACHE is set to True, it will ensure the TRACK_CACHE is disposed and recreated when we do dataset initialization.
# Use as a shortcut to wiping cache rather than restarting kernel
RESET_CACHE = False

PREDICTION_WINDOW = 3
#PREDICTION_WINDOW = 'ALL'

ALL_PREDICTION_WINDOWS = [3, 5, 10, 15]

# Maximum number of cases of interest for which to download data.
# Set to a small value (ex: 20) for demo purposes, else set to None to disable and download and process all.
MAX_CASES = None
#MAX_CASES = 300

# Preloading Cases: when true, all matched cases will have the _mini tracks extracted and put into in-mem dict
PRELOADING_CASES = False
PRELOADING_SEGMENTS = True
# Perform Data Preprocessing: do we want to take the raw vital file and extract segments of interest for training?
PERFORM_DATA_PREPROCESSING = False
In [8]:
if not os.path.exists(VITALDB_CACHE):
  os.mkdir(VITALDB_CACHE)
if not os.path.exists(VITAL_ALL):
  os.mkdir(VITAL_ALL)
if not os.path.exists(VITAL_MINI):
  os.mkdir(VITAL_MINI)
if not os.path.exists(VITAL_METADATA):
  os.mkdir(VITAL_METADATA)
if not os.path.exists(VITAL_MODELS):
  os.mkdir(VITAL_MODELS)
if not os.path.exists(VITAL_RUNS):
  os.mkdir(VITAL_RUNS)
if not os.path.exists(VITAL_PREPROCESS_SCRATCH):
  os.mkdir(VITAL_PREPROCESS_SCRATCH)
if not os.path.exists(VITAL_EXTRACTED_SEGMENTS):
  os.mkdir(VITAL_EXTRACTED_SEGMENTS)

print(os.listdir(VITALDB_CACHE))
['segments_filter_neg', 'segments_bak', 'runs_old', '.DS_Store', 'segments_filter_neg_pos', 'vital_mini_bak_0501', 'vital_all', 'segments_sizes_sp.txt', 'models_all_cases_baseline', 'models', 'docs', 'vital_mini.tar', 'data_scratch', 'segments_md5_sp.txt', 'vital_file_md5_mw.txt', 'segments_bak_0501', 'osfs', 'runs_03_15', 'vital_mini', 'segments_filter_none', 'vital_file_mini_md5_sp.txt', 'vital_file_mini_file_sizes_sp.txt', 'runs', 'metadata', 'segments', 'models_old', 'vital_file_md5_sp.txt']

Bulk Data Download¶

This step is not required, but will significantly speed up downstream processing and avoid a high volume of API requests to the VitalDB web site.

The cache population code checks if the .vital files are locally available, and can be populated by calling the vitaldb API or by manually prepopulating the cache (recommended)

  • Manually downloaded the dataset from the following site: https://physionet.org/content/vitaldb/1.0.0/
    • Download the zip file in a browser, or
    • Use wget -r -N -c -np https://physionet.org/files/vitaldb/1.0.0/ to download the files in a terminal
  • Move the contents of vital_files into the ${VITAL_ALL} directory.
In [9]:
# Returns the Pandas DataFrame for the specified dataset.
#   One of 'cases', 'labs', or 'trks'
# If the file exists locally, create and return the DataFrame.
# Else, download and cache the csv first, then return the DataFrame.
def vitaldb_dataframe_loader(dataset_name):
    if dataset_name not in ['cases', 'labs', 'trks']:
        raise ValueError(f'Invalid dataset name: {dataset_name}')
    file_path = f'{VITAL_METADATA}/{dataset_name}.csv'
    if os.path.isfile(file_path):
        print(f'{dataset_name}.csv exists locally.')
        df = pd.read_csv(file_path)
        return df
    else:
        print(f'downloading {dataset_name} and storing in the local cache for future reuse.')
        df = pd.read_csv(f'https://api.vitaldb.net/{dataset_name}')
        df.to_csv(file_path, index=False)
        return df

Exploratory Data Analysis¶

Cases¶

In [10]:
cases = vitaldb_dataframe_loader('cases')
cases = cases.set_index('caseid')
cases.shape
cases.csv exists locally.
Out[10]:
(6388, 73)
In [11]:
cases.index.nunique()
Out[11]:
6388
In [12]:
cases.head()
Out[12]:
subjectid casestart caseend anestart aneend opstart opend adm dis icu_days ... intraop_colloid intraop_ppf intraop_mdz intraop_ftn intraop_rocu intraop_vecu intraop_eph intraop_phe intraop_epi intraop_ca
caseid
1 5955 0 11542 -552 10848.0 1668 10368 -236220 627780 0 ... 0 120 0.0 100 70 0 10 0 0 0
2 2487 0 15741 -1039 14921.0 1721 14621 -221160 1506840 0 ... 0 150 0.0 0 100 0 20 0 0 0
3 2861 0 4394 -590 4210.0 1090 3010 -218640 40560 0 ... 0 0 0.0 0 50 0 0 0 0 0
4 1903 0 20990 -778 20222.0 2522 17822 -201120 576480 1 ... 0 80 0.0 100 100 0 50 0 0 0
5 4416 0 21531 -1009 22391.0 2591 20291 -67560 3734040 13 ... 0 0 0.0 0 160 0 10 900 0 2100

5 rows × 73 columns

In [13]:
cases['sex'].value_counts()
Out[13]:
sex
M    3243
F    3145
Name: count, dtype: int64

Tracks¶

In [14]:
trks = vitaldb_dataframe_loader('trks')
trks = trks.set_index('caseid')
trks.shape
trks.csv exists locally.
Out[14]:
(486449, 2)
In [15]:
trks.index.nunique()
Out[15]:
6388
In [16]:
trks.groupby('caseid')[['tid']].count().plot();
In [17]:
trks.groupby('caseid')[['tid']].count().hist();
In [18]:
trks.groupby('tname').count().sort_values(by='tid', ascending=False)
Out[18]:
tid
tname
Solar8000/HR 6387
Solar8000/PLETH_SPO2 6386
Solar8000/PLETH_HR 6386
Primus/CO2 6362
Primus/PAMB_MBAR 6361
... ...
Orchestra/AMD_VOL 1
Solar8000/ST_V5 1
Orchestra/NPS_VOL 1
Orchestra/AMD_RATE 1
Orchestra/VEC_VOL 1

196 rows × 1 columns

Parameters of Interest¶

Hemodynamic Parameters Reference¶

https://vitaldb.net/dataset/?query=overview#h.f7d712ycdpk2

SNUADC/ART

arterial blood pressure waveform

Parameter, Description, Type/Hz, Unit

SNUADC/ART, Arterial pressure wave, W/500, mmHg

In [19]:
trks[trks['tname'].str.contains('SNUADC/ART')].shape
Out[19]:
(3645, 2)

SNUADC/ECG_II

electrocardiogram waveform

Parameter, Description, Type/Hz, Unit

SNUADC/ECG_II, ECG lead II wave, W/500, mV

In [20]:
trks[trks['tname'].str.contains('SNUADC/ECG_II')].shape
Out[20]:
(6355, 2)

BIS/EEG1_WAV

electroencephalogram waveform

Parameter, Description, Type/Hz, Unit

BIS/EEG1_WAV, EEG wave from channel 1, W/128, uV

In [21]:
trks[trks['tname'].str.contains('BIS/EEG1_WAV')].shape
Out[21]:
(5871, 2)

Cases of Interest¶

These are the subset of case ids for which modelling and analysis will be performed based upon inclusion criteria and waveform data availability.

In [22]:
# TRACK NAMES is used for metadata analysis via API
TRACK_NAMES = ['SNUADC/ART', 'SNUADC/ECG_II', 'BIS/EEG1_WAV']
TRACK_SRATES = [500, 500, 128]
# EXTRACTION TRACK NAMES adds the EVENT track which is only used when doing actual file i/o
EXTRACTION_TRACK_NAMES = ['SNUADC/ART', 'SNUADC/ECG_II', 'BIS/EEG1_WAV', 'EVENT']
EXTRACTION_TRACK_SRATES = [500, 500, 128, 1]
In [23]:
# As in the paper, select cases which meet the following criteria:
#
# For patients, the inclusion criteria were as follows:
# (1) adults (age >= 18)
# (2) administered general anaesthesia
# (3) undergone non-cardiac surgery. 
#
# For waveform data, the inclusion criteria were as follows:
# (1) no missing monitoring for ABP, ECG, and EEG waveforms
# (2) no cases containing false events or non-events due to poor signal quality
#     (checked in second stage of data preprocessing)

# Adult
inclusion_1 = cases.loc[cases['age'] >= 18].index
print(f'{len(cases)-len(inclusion_1)} cases excluded, {len(inclusion_1)} remaining due to age criteria')

# General Anesthesia
inclusion_2 = cases.loc[cases['ane_type'] == 'General'].index
print(f'{len(cases)-len(inclusion_2)} cases excluded, {len(inclusion_2)} remaining due to anesthesia criteria')

# Non-cardiac surgery
inclusion_3 = cases.loc[
    ~cases['opname'].str.contains("cardiac", case=False)
    & ~cases['opname'].str.contains("aneurysmal", case=False)
].index
print(f'{len(cases)-len(inclusion_3)} cases excluded, {len(inclusion_3)} remaining due to non-cardiac surgery criteria')

# ABP, ECG, EEG waveforms
inclusion_4 = trks.loc[trks['tname'].isin(TRACK_NAMES)].index.value_counts()
inclusion_4 = inclusion_4[inclusion_4 == len(TRACK_NAMES)].index
print(f'{len(cases)-len(inclusion_4)} cases excluded, {len(inclusion_4)} remaining due to missing waveform data')

# SQI filter
# NOTE: this depends on a sqi_filter.csv generated by external processing
inclusion_5 = pd.read_csv('sqi_filter.csv', header=None, names=['caseid','sqi']).set_index('caseid').index
print(f'{len(cases)-len(inclusion_5)} cases excluded, {len(inclusion_5)} remaining due to SQI threshold not being met')

# Only include cases with known good waveforms.
exclusion_6 = pd.read_csv('malformed_tracks_filter.csv', header=None, names=['caseid']).set_index('caseid').index
inclusion_6 = cases.index.difference(exclusion_6)
print(f'{len(cases)-len(inclusion_6)} cases excluded, {len(inclusion_6)} remaining due to malformed waveforms')

cases_of_interest_idx = inclusion_1 \
    .intersection(inclusion_2) \
    .intersection(inclusion_3) \
    .intersection(inclusion_4) \
    .intersection(inclusion_5) \
    .intersection(inclusion_6)

cases_of_interest = cases.loc[cases_of_interest_idx]

print()
print(f'{cases_of_interest_idx.shape[0]} out of {cases.shape[0]} total cases remaining after exclusions applied')

# Trim cases of interest to MAX_CASES
if MAX_CASES:
    cases_of_interest_idx = cases_of_interest_idx[:MAX_CASES]
print(f'{cases_of_interest_idx.shape[0]} cases of interest selected')
57 cases excluded, 6331 remaining due to age criteria
345 cases excluded, 6043 remaining due to anesthesia criteria
14 cases excluded, 6374 remaining due to non-cardiac surgery criteria
3019 cases excluded, 3369 remaining due to missing waveform data
0 cases excluded, 6388 remaining due to SQI threshold not being met
533 cases excluded, 5855 remaining due to malformed waveforms

2763 out of 6388 total cases remaining after exclusions applied
2763 cases of interest selected
In [24]:
cases_of_interest.head(n=5)
Out[24]:
subjectid casestart caseend anestart aneend opstart opend adm dis icu_days ... intraop_colloid intraop_ppf intraop_mdz intraop_ftn intraop_rocu intraop_vecu intraop_eph intraop_phe intraop_epi intraop_ca
caseid
1 5955 0 11542 -552 10848.0 1668 10368 -236220 627780 0 ... 0 120 0.0 100 70 0 10 0 0 0
4 1903 0 20990 -778 20222.0 2522 17822 -201120 576480 1 ... 0 80 0.0 100 100 0 50 0 0 0
7 5124 0 15770 477 14817.0 3177 14577 -154320 623280 3 ... 0 0 0.0 0 120 0 0 0 0 0
10 2175 0 20992 -1743 21057.0 2457 19857 -220740 3580860 1 ... 0 90 0.0 0 110 0 20 500 0 600
12 491 0 31203 -220 31460.0 5360 30860 -208500 1519500 4 ... 200 100 0.0 100 70 0 20 0 0 3300

5 rows × 73 columns

Tracks of Interest¶

These are the subset of tracks (waveforms) for the cases of interest identified above.

In [25]:
# A single case maps to one or more waveform tracks. Select only the tracks required for analysis.
trks_of_interest = trks.loc[cases_of_interest_idx][trks.loc[cases_of_interest_idx]['tname'].isin(TRACK_NAMES)]
trks_of_interest.shape
Out[25]:
(8289, 2)
In [26]:
trks_of_interest.head(n=5)
Out[26]:
tname tid
caseid
1 BIS/EEG1_WAV 0aa685df768489a18a5e9f53af0d83bf60890c73
1 SNUADC/ART 724cdd7184d7886b8f7de091c5b135bd01949959
1 SNUADC/ECG_II 8c9161aaae8cb578e2aa7b60f44234d98d2b3344
4 BIS/EEG1_WAV 1b4c2379be3397a79d3787dd810190150dc53f27
4 SNUADC/ART e28777c4706fe3a5e714bf2d91821d22d782d802
In [27]:
trks_of_interest_idx = trks_of_interest.set_index('tid').index
trks_of_interest_idx.shape
Out[27]:
(8289,)

Build Tracks Cache for Local Processing¶

Tracks data are large and therefore expensive to download every time used. By default, the .vital file format stores all tracks for each case internally. Since only select tracks per case are required, each .vital file can be further reduced by discarding the unused tracks.

In [28]:
# Ensure the full vital file dataset is available for cases of interest.
count_downloaded = 0
count_present = 0

#for i, idx in enumerate(cases.index):
for idx in cases_of_interest_idx:
    full_path = f'{VITAL_ALL}/{idx:04d}.vital'
    if not os.path.isfile(full_path):
        print(f'Missing vital file: {full_path}')
        # Download and save the file.
        vf = vitaldb.VitalFile(idx)
        vf.to_vital(full_path)
        count_downloaded += 1
    else:
        count_present += 1

print()
print(f'Count of cases of interest:           {cases_of_interest_idx.shape[0]}')
print(f'Count of vital files downloaded:      {count_downloaded}')
print(f'Count of vital files already present: {count_present}')
Count of cases of interest:           2763
Count of vital files downloaded:      0
Count of vital files already present: 2763

Validate Mini Files¶

In [29]:
# Convert vital files to "mini" versions including only the subset of tracks defined in TRACK_NAMES above.
# Only perform conversion for the cases of interest.
# NOTE: If this cell is interrupted, it can be restarted and will continue where it left off.
count_minified = 0
count_present = 0
count_missing_tracks = 0
count_not_fixable = 0

# If set to true, local mini files are checked for all tracks even if the mini file is already present.
FORCE_VALIDATE = False

for idx in cases_of_interest_idx:
    full_path = f'{VITAL_ALL}/{idx:04d}.vital'
    mini_path = f'{VITAL_MINI}/{idx:04d}_mini.vital'

    if FORCE_VALIDATE or not os.path.isfile(mini_path):
        print(f'Creating mini vital file: {idx}')
        vf = vitaldb.VitalFile(full_path, EXTRACTION_TRACK_NAMES)
        
        if len(vf.get_track_names()) != 4:
            print(f'Missing track in vital file: {idx}, {set(EXTRACTION_TRACK_NAMES).difference(set(vf.get_track_names()))}')
            count_missing_tracks += 1
            
            # Attempt to download from VitalDB directly and see if missing tracks are present.
            vf = vitaldb.VitalFile(idx, EXTRACTION_TRACK_NAMES)
            
            if len(vf.get_track_names()) != 4:
                print(f'Unable to fix missing tracks: {idx}')
                count_not_fixable += 1
                continue
                
            if vf.get_track_samples(EXTRACTION_TRACK_NAMES[0], 1/EXTRACTION_TRACK_SRATES[0]).shape[0] == 0:
                print(f'Empty track: {idx}, {EXTRACTION_TRACK_NAMES[0]}')
                count_not_fixable += 1
                continue
                
            if vf.get_track_samples(EXTRACTION_TRACK_NAMES[1], 1/EXTRACTION_TRACK_SRATES[1]).shape[0] == 0:
                print(f'Empty track: {idx}, {EXTRACTION_TRACK_NAMES[1]}')
                count_not_fixable += 1
                continue
                
            if vf.get_track_samples(EXTRACTION_TRACK_NAMES[2], 1/EXTRACTION_TRACK_SRATES[2]).shape[0] == 0:
                print(f'Empty track: {idx}, {EXTRACTION_TRACK_NAMES[2]}')
                count_not_fixable += 1
                continue

            if vf.get_track_samples(EXTRACTION_TRACK_NAMES[3], 1/EXTRACTION_TRACK_SRATES[3]).shape[0] == 0:
                print(f'Empty track: {idx}, {EXTRACTION_TRACK_NAMES[3]}')
                count_not_fixable += 1
                continue

        vf.to_vital(mini_path)
        count_minified += 1
    else:
        count_present += 1

print()
print(f'Count of cases of interest:           {cases_of_interest_idx.shape[0]}')
print(f'Count of vital files minified:        {count_minified}')
print(f'Count of vital files already present: {count_present}')
print(f'Count of vital files missing tracks:  {count_missing_tracks}')
print(f'Count of vital files not fixable:     {count_not_fixable}')
Count of cases of interest:           2763
Count of vital files minified:        0
Count of vital files already present: 2763
Count of vital files missing tracks:  0
Count of vital files not fixable:     0

Filtering¶

Preprocessing characteristics are different for each of the three signal categories:

  • ABP: no preprocessing, use as-is
  • ECG: apply a 1-40Hz bandpass filter, then perform Z-score normalization
  • EEG: apply a 0.5-50Hz bandpass filter

apply_bandpass_filter() implements the bandpass filter using scipy.signal

apply_zscore_normalization() implements the Z-score normalization using numpy

In [30]:
from scipy.signal import butter, lfilter, spectrogram

# define two methods for data preprocessing

def apply_bandpass_filter(data, lowcut, highcut, fs, order=5):
    b, a = butter(order, [lowcut, highcut], fs=fs, btype='band')
    y = lfilter(b, a, np.nan_to_num(data))
    return y

def apply_zscore_normalization(signal):
    mean = np.nanmean(signal)
    std = np.nanstd(signal)
    return (signal - mean) / std
In [31]:
# Filtering Demonstration

# temp experimental, code to be incorporated into overall preloader process
# for now it's just dumping example plots of the before/after filtered signal data
caseidx = 1
file_path = f"{VITAL_MINI}/{caseidx:04d}_mini.vital"
vf = vitaldb.VitalFile(file_path, TRACK_NAMES)

originalAbp = None
filteredAbp = None
originalEcg = None
filteredEcg = None
originalEeg = None
filteredEeg = None

ABP_TRACK_NAME = "SNUADC/ART"
ECG_TRACK_NAME = "SNUADC/ECG_II"
EEG_TRACK_NAME = "BIS/EEG1_WAV"

for i, (track_name, rate) in enumerate(zip(TRACK_NAMES, TRACK_SRATES)):
    # Get samples for this track
    track_samples = vf.get_track_samples(track_name, 1/rate)
    #track_samples, _ = vf.get_samples(track_name, 1/rate)
    print(f"Track {track_name} @ {rate}Hz shape {len(track_samples)}")

    if track_name == ABP_TRACK_NAME:
        # ABP waveforms are used without further pre-processing
        originalAbp = track_samples
        filteredAbp = track_samples
    elif track_name == ECG_TRACK_NAME:
        originalEcg = track_samples
        # ECG waveforms are band-pass filtered between 1 and 40 Hz, and Z-score normalized
        # first apply bandpass filter
        filteredEcg = apply_bandpass_filter(track_samples, 1, 40, rate)
        # then do z-score normalization
        filteredEcg = apply_zscore_normalization(filteredEcg)
    elif track_name == EEG_TRACK_NAME:
        # EEG waveforms are band-pass filtered between 0.5 and 50 Hz
        originalEeg = track_samples
        filteredEeg = apply_bandpass_filter(track_samples, 0.5, 50, rate, 2)

def plotSignal(data, title):
    plt.figure(figsize=(20, 5))
    plt.plot(data)
    plt.title(title)
    plt.show()

plotSignal(originalAbp, "Original ABP")
plotSignal(originalAbp, "Unfiltered ABP")
plotSignal(originalEcg, "Original ECG")
plotSignal(filteredEcg, "Filtered ECG")
plotSignal(originalEeg, "Original EEG")
plotSignal(filteredEeg, "Filtered EEG")
Track SNUADC/ART @ 500Hz shape 5771049
Track SNUADC/ECG_II @ 500Hz shape 5771049
Track BIS/EEG1_WAV @ 128Hz shape 1477389
In [32]:
# Preprocess data tracks
ABP_TRACK_NAME = "SNUADC/ART"
ECG_TRACK_NAME = "SNUADC/ECG_II"
EEG_TRACK_NAME = "BIS/EEG1_WAV"
EVENT_TRACK_NAME = "EVENT"
MINI_FILE_FOLDER = VITAL_MINI
CACHE_FILE_FOLDER = VITAL_PREPROCESS_SCRATCH

if RESET_CACHE:
    TRACK_CACHE = None
    SEGMENT_CACHE = None

if TRACK_CACHE is None:
    TRACK_CACHE = {}
    SEGMENT_CACHE = {}

def get_track_data(case, print_when_file_loaded = False):
    parsedFile = None
    abp = None
    eeg = None
    ecg = None
    events = None

    for i, (track_name, rate) in enumerate(zip(EXTRACTION_TRACK_NAMES, EXTRACTION_TRACK_SRATES)):
        # use integer case id and track name, delimited by pipe, as cache key
        cache_label = f"{case}|{track_name}"
        
        if cache_label not in TRACK_CACHE:
            if parsedFile is None:
                file_path = f"{MINI_FILE_FOLDER}/{case:04d}_mini.vital"
                if print_when_file_loaded:
                    print(f"[{datetime.now()}] Loading vital file {file_path}")
                parsedFile = vitaldb.VitalFile(file_path, EXTRACTION_TRACK_NAMES)
            
            dataset = np.array(parsedFile.get_track_samples(track_name, 1/rate))
            
            if track_name == ABP_TRACK_NAME:
                # no filtering for ABP
                abp = dataset
                abp = pd.DataFrame(abp).ffill(axis=0).bfill(axis=0)[0].values
                if USE_MEMORY_CACHING:
                    TRACK_CACHE[cache_label] = abp
            elif track_name == ECG_TRACK_NAME:
                ecg = dataset
                # apply ECG filtering: first bandpass then do z-score normalization
                ecg = pd.DataFrame(ecg).ffill(axis=0).bfill(axis=0)[0].values
                ecg = apply_bandpass_filter(ecg, 1, 40, rate, 2)
                ecg = apply_zscore_normalization(ecg)
                
                if USE_MEMORY_CACHING:
                    TRACK_CACHE[cache_label] = ecg
            elif track_name == EEG_TRACK_NAME:
                eeg = dataset
                eeg = pd.DataFrame(eeg).ffill(axis=0).bfill(axis=0)[0].values
                # apply EEG filtering: bandpass only
                eeg = apply_bandpass_filter(eeg, 0.5, 50, rate, 2)
                if USE_MEMORY_CACHING:
                    TRACK_CACHE[cache_label] = eeg
            elif track_name == EVENT_TRACK_NAME:
                events = dataset
                if USE_MEMORY_CACHING:
                    TRACK_CACHE[cache_label] = events
        else:
            # cache hit, pull from cache
            if track_name == ABP_TRACK_NAME:
                abp = TRACK_CACHE[cache_label]
            elif track_name == ECG_TRACK_NAME:
                ecg = TRACK_CACHE[cache_label]
            elif track_name == EEG_TRACK_NAME:
                eeg = TRACK_CACHE[cache_label]
            elif track_name == EVENT_TRACK_NAME:
                events = TRACK_CACHE[cache_label]

    return (abp, ecg, eeg, events)

# ABP waveforms are used without further pre-processing
# ECG waveforms are band-pass filtered between 1 and 40 Hz, and Z-score normalized
# EEG waveforms are band-pass filtered between 0.5 and 50 Hz
if PRELOADING_CASES:
    # determine disk cache file label
    maxlabel = "ALL"
    if MAX_CASES is not None:
        maxlabel = str(MAX_CASES)
    picklefile = f"{CACHE_FILE_FOLDER}/{PREDICTION_WINDOW}_minutes_MAX{maxlabel}.trackcache"

    for track in tqdm(cases_of_interest_idx):
        # getting track data will cause a cache-check and fill when missing
        # will also apply appropriate filtering per track
        get_track_data(track, False)
    
    print(f"Generated track cache, {len(TRACK_CACHE)} records generated")


def get_segment_data(file_path):
    abp = None
    eeg = None
    ecg = None

    if USE_MEMORY_CACHING:
        if file_path in SEGMENT_CACHE:
            (abp, ecg, eeg) = SEGMENT_CACHE[file_path]
            return (abp, ecg, eeg)

    try:
        with h5py.File(file_path, 'r') as f:
            abp = np.array(f['abp'])
            ecg = np.array(f['ecg'])
            eeg = np.array(f['eeg'])
        
        abp = np.array(abp)
        eeg = np.array(eeg)
        ecg = np.array(ecg)

        if len(abp) > 30000:
            abp = abp[:30000]
        elif len(ecg) < 30000:
            abp = np.resize(abp, (30000))

        if len(ecg) > 30000:
            ecg = ecg[:30000]
        elif len(ecg) < 30000:
            ecg = np.resize(ecg, (30000))

        if len(eeg) > 7680:
            eeg = eeg[:7680]
        elif len(eeg) < 7680:
            eeg = np.resize(eeg, (7680))

        if USE_MEMORY_CACHING:
            SEGMENT_CACHE[file_path] = (abp, ecg, eeg)
    except:
        abp = None
        ecg = None
        eeg = None

    return (abp, ecg, eeg)

The following method is adapted from the preprocessing block of reference [6] (https://github.com/vitaldb/examples/blob/master/hypotension_art.ipynb)

The approach first finds an interoperative hypotensive event in the ABP waveform. It then backtracks to earlier in the waveform to extract a 60 second segment representing the waveform feature to use as model input. The figure below shows an example of this approach and is reproduced from the VitalDB example notebook referenced above.

Feature segment extraction

In [33]:
def getSurgeryBoundariesInSeconds(event, debug=False):
    eventIndices = np.argwhere(event==event)
    # we are looking for the last index where the string contains 'start
    lastStart = 0
    firstFinish = len(event)-1
    
    # find last start
    for idx in eventIndices:
        if 'started' in event[idx[0]]:
            if debug:
                print(event[idx[0]])
                print(idx[0])
            lastStart = idx[0]
    
    # find first finish
    for idx in eventIndices:
        if 'finish' in event[idx[0]]:
            if debug:
                print(event[idx[0]])
                print(idx[0])

            firstFinish = idx[0]
            break
    
    if debug:
        print(f'lastStart, firstFinish: {lastStart}, {firstFinish}')
    return (lastStart, firstFinish)
In [34]:
def areCaseSegmentsCached(caseid):
    seg_folder = f"{VITAL_EXTRACTED_SEGMENTS}/{caseid:04d}"
    return os.path.exists(seg_folder) and len(os.listdir(seg_folder)) > 0
In [35]:
def isAbpSegmentValidNumpy(samples, debug=False):
    valid = True
    if np.isnan(samples).mean() > 0.1:
        valid = False
        if debug:
            print(f">10% NaN")
    elif (samples > 200).any():
        valid = False
        if debug:
            print(f"Presence of BP > 200")
    elif (samples < 30).any():
        valid = False
        if debug:
            print(f"Presence of BP < 30")
    elif np.max(samples) - np.min(samples) < 30:
        if debug:
            print(f"Max - Min test < 30")
        valid = False
    elif (np.abs(np.diff(samples)) > 30).any():  # abrupt change -> noise
        if debug:
            print(f"Abrupt change (noise)")
        valid = False
    
    return valid
In [36]:
def isAbpSegmentValid(vf, debug=False):
    ABP_ECG_SRATE_HZ = 500
    ABP_TRACK_NAME = "SNUADC/ART"

    samples = np.array(vf.get_track_samples(ABP_TRACK_NAME, 1/ABP_ECG_SRATE_HZ))
    return isAbpSegmentValidNumpy(samples, debug)
In [37]:
def saveCaseSegments(caseid, positiveSegments, negativeSegments, compresslevel=9, debug=False, forceWrite=False):
    if len(positiveSegments) == 0 and len(negativeSegments) == 0:
        # exit early if no events found
        print(f'{caseid}: exit early, no segments to save')
        return

    # event composition
    # predictiveSegmentStart in seconds, predictiveSegmentEnd in seconds, predWindow (0 for negative), abp, ecg, eeg)
    # 0start, 1end, 2predwindow, 3abp, 4ecg, 5eeg

    seg_folder = f"{VITAL_EXTRACTED_SEGMENTS}/{caseid:04d}"
    if not os.path.exists(seg_folder):
        # if directory needs to be created, then there are no cached segments
        os.mkdir(seg_folder)
    else:
        if not forceWrite:
            # exit early if folder already exists, case already produced
            return

    # prior to writing files out, clear existing files
    for filename in os.listdir(seg_folder):
        file_path = os.path.join(seg_folder, filename)
        if debug:
            print(f'deleting: {file_path}')
        try:
            if os.path.isfile(file_path):
                os.unlink(file_path)
        except Exception as e:
            print('Failed to delete %s. Reason: %s' % (file_path, e))
    
    count_pos_saved = 0
    for i in range(0, len(positiveSegments)):
        event = positiveSegments[i]
        startIndex = event[0]
        endIndex = event[1]
        predWindow = event[2]
        abp = event[3]
        #ecg = event[4]
        #eeg = event[5]

        seg_filename = f"{caseid:04d}_{startIndex}_{predWindow:02d}_True.h5"
        seg_fullpath = f"{seg_folder}/{seg_filename}"
        if isAbpSegmentValidNumpy(abp, debug):
            count_pos_saved += 1

            abp = abp.tolist()
            ecg = event[4].tolist()
            eeg = event[5].tolist()
        
            f = h5py.File(seg_fullpath, "w")
            f.create_dataset('abp', data=abp, compression="gzip", compression_opts=compresslevel)
            f.create_dataset('ecg', data=ecg, compression="gzip", compression_opts=compresslevel)
            f.create_dataset('eeg', data=eeg, compression="gzip", compression_opts=compresslevel)
            
            f.flush()
            f.close()
            f = None

            abp = None
            ecg = None
            eeg = None

            # f.create_dataset('label', data=[1], compression="gzip", compression_opts=compresslevel)
            # f.create_dataset('pred_window', data=[event[2]], compression="gzip", compression_opts=compresslevel)
            # f.create_dataset('caseid', data=[caseid], compression="gzip", compression_opts=compresslevel)
        elif debug:
            print(f"{caseid:04d} {predWindow:02d}min {startIndex} starttime = ignored, segment validity issues")

    count_neg_saved = 0
    for i in range(0, len(negativeSegments)):
        event = negativeSegments[i]
        startIndex = event[0]
        endIndex = event[1]
        predWindow = event[2]
        abp = event[3]
        #ecg = event[4]
        #eeg = event[5]

        seg_filename = f"{caseid:04d}_{startIndex}_0_False.h5"
        seg_fullpath = f"{seg_folder}/{seg_filename}"
        if isAbpSegmentValidNumpy(abp, debug):
            count_neg_saved += 1

            abp = abp.tolist()
            ecg = event[4].tolist()
            eeg = event[5].tolist()
            
            f = h5py.File(seg_fullpath, "w")
            f.create_dataset('abp', data=abp, compression="gzip", compression_opts=compresslevel)
            f.create_dataset('ecg', data=ecg, compression="gzip", compression_opts=compresslevel)
            f.create_dataset('eeg', data=eeg, compression="gzip", compression_opts=compresslevel)
            
            f.flush()
            f.close()
            f = None

            abp = None
            ecg = None
            eeg = None

            # f.create_dataset('label', data=[0], compression="gzip", compression_opts=compresslevel)
            # f.create_dataset('pred_window', data=[0], compression="gzip", compression_opts=compresslevel)
            # f.create_dataset('caseid', data=[caseid], compression="gzip", compression_opts=compresslevel)
        elif debug:
            print(f"{caseid:04d} CleanWindow {startIndex} starttime = ignored, segment validity issues")
            
    if count_neg_saved == 0 and count_pos_saved == 0:
        print(f'{caseid}: nothing saved, all segments filtered')
In [38]:
# Generate hypotensive events
# Hypotensive events are defined as a 1-minute interval with sustained ABP of less than 65 mmHg
# Note: Hypotensive events should be at least 20 minutes apart to minimize potential residual effects from previous events
# Generate hypotension non-events
# To sample non-events, 30-minute segments where the ABP was above 75 mmHG were selected, and then
# three one-minute samples of each waveform were obtained from the middle of the segment
# both occur in extract_segments
#VITAL_EXTRACTED_SEGMENTS
def extract_segments(
    cases_of_interest_idx,
    debug=False,
    checkCache=True,
    forceWrite=False,
    returnSegments=False,
    skipInvalidCleanEvents=False,
    skipInvalidIohEvents=False
):
    # Sampling rate for ABP and ECG, Hz. These rates should be the same. Default = 500
    ABP_ECG_SRATE_HZ = 500

    # Sampling rate for EEG. Default = 128
    EEG_SRATE_HZ = 128

    # Final dataset for training and testing the model.
    positiveSegmentsMap = {}
    negativeSegmentsMap = {}
    iohEventsMap = {}
    cleanEventsMap = {}

    # Process each case and extract segments. For each segment identify presence of an event in the label zone.
    count_cases = len(cases_of_interest_idx)

    #for case_count, caseid in tqdm(enumerate(cases_of_interest_idx), total=count_cases):
    for case_count, caseid in enumerate(cases_of_interest_idx):
        if debug:
            print(f'Loading case: {caseid:04d}, ({case_count + 1} of {count_cases})')

        if checkCache and areCaseSegmentsCached(caseid):
            if debug:
                print(f'Skipping case: {caseid:04d}, already cached')
            # skip records we've already cached
            continue

        # read the arterial waveform
        (abp, ecg, eeg, event) = get_track_data(caseid)
        if debug:
            print(f'Length of {TRACK_NAMES[0]}:       {abp.shape[0]}')
            print(f'Length of {TRACK_NAMES[1]}:    {ecg.shape[0]}')
            print(f'Length of {TRACK_NAMES[2]}:     {eeg.shape[0]}')

        (startInSeconds, endInSeconds) = getSurgeryBoundariesInSeconds(event)
        if debug:
            print(f"Event markers indicate that surgery begins at {startInSeconds}s and ends at {endInSeconds}s.")

        track_length_seconds = int(len(abp) / ABP_ECG_SRATE_HZ)
        if debug:
            print(f"Processing case {caseid} with length {track_length_seconds}s")

        
        # check if the ABP segment in the surgery window is valid
        if debug:
            isSurgerySegmentValid = isAbpSegmentValidNumpy(abp[startInSeconds:endInSeconds])
            print(f'{caseid}: surgery segment valid: {isSurgerySegmentValid}')
        
        iohEvents = []
        cleanEvents = []
        i = 0
        started = False
        eofReached = False
        trackStartIndex = None

        # set i pointer (which operates in seconds) to start marker for surgery
        i = startInSeconds

        # FIRST PASS
        # in the first forward pass, we are going to identify the start/end boundaries of all IOH events within the case
        ioh_events_valid = []
        
        while i < track_length_seconds - 60 and i < endInSeconds:
            segmentStart = None
            segmentEnd = None
            segFound = False

            # look forward one minute
            abpSeg = abp[i * ABP_ECG_SRATE_HZ:(i + 60) * ABP_ECG_SRATE_HZ]

            # roll forward until we hit a one minute window where mean ABP >= 65 so we know leads are connected and it's tracking
            if not started:
                if np.nanmean(abpSeg) >= 65:
                    started = True
                    trackStartIndex = i
            # if we're started and mean abp for the window is <65, we are starting a new IOH event
            elif np.nanmean(abpSeg) < 65:
                segmentStart = i
                # now seek forward to find end of event, perpetually checking the lats minute of the IOH event
                for j in range(i + 60, track_length_seconds):
                    # look backward one minute
                    abpSegForward = abp[(j - 60) * ABP_ECG_SRATE_HZ:j * ABP_ECG_SRATE_HZ]
                    if np.nanmean(abpSegForward) >= 65:
                        segmentEnd = j - 1
                        break
                if segmentEnd is None:
                    eofReached = True
                else:
                    # otherwise, end of the IOH segment has been reached, record it
                    iohEvents.append((segmentStart, segmentEnd))
                    segFound = True
                    
                    if skipInvalidIohEvents:
                        isIohSegmentValid = isAbpSegmentValidNumpy(abpSeg)
                        ioh_events_valid.append(isIohSegmentValid)
                        if debug:
                            print(f'{caseid}: ioh segment valid: {isIohSegmentValid}, {segmentStart}, {segmentEnd}, {t_abp.shape}')
                    else:
                        ioh_events_valid.append(True)

            i += 1
            if not started:
                continue
            elif eofReached:
                break
            elif segFound:
                i = segmentEnd + 1

        # SECOND PASS
        # in the second forward pass, we are going to identify the start/end boundaries of all non-overlapping 30 minute "clean" windows
        # reuse the 'start of signal' index from our first pass
        if trackStartIndex is None:
            trackStartIndex = startInSeconds
        i = trackStartIndex
        eofReached = False

        clean_events_valid = []
        
        while i < track_length_seconds - 1800 and i < endInSeconds:
            segmentStart = None
            segmentEnd = None
            segFound = False

            startIndex = i
            endIndex = i + 1800

            # check to see if this 30 minute window overlaps any IOH events, if so ffwd to end of latest overlapping IOH
            overlapFound = False
            latestEnd = None
            for event in iohEvents:
                # case 1: starts during an event
                if startIndex >= event[0] and startIndex < event[1]:
                    latestEnd = event[1]
                    overlapFound = True
                # case 2: ends during an event
                elif endIndex >= event[0] and endIndex < event[1]:
                    latestEnd = event[1]
                    overlapFound = True
                # case 3: event occurs entirely inside of the window
                elif startIndex < event[0] and endIndex > event[1]:
                    latestEnd = event[1]
                    overlapFound = True

            # FFWD if we found an overlap
            if overlapFound:
                i = latestEnd + 1
                continue

            # look forward 30 minutes
            abpSeg = abp[startIndex * ABP_ECG_SRATE_HZ:endIndex * ABP_ECG_SRATE_HZ]

            # if we're started and mean abp for the window is >= 75, we are starting a new clean event
            if np.nanmean(abpSeg) >= 75:
                overlapFound = False
                latestEnd = None
                for event in iohEvents:
                    # case 1: starts during an event
                    if startIndex >= event[0] and startIndex < event[1]:
                        latestEnd = event[1]
                        overlapFound = True
                    # case 2: ends during an event
                    elif endIndex >= event[0] and endIndex < event[1]:
                        latestEnd = event[1]
                        overlapFound = True
                    # case 3: event occurs entirely inside of the window
                    elif startIndex < event[0] and endIndex > event[1]:
                        latestEnd = event[1]
                        overlapFound = True

                if not overlapFound:
                    segFound = True
                    segmentEnd = endIndex
                    cleanEvents.append((startIndex, endIndex))
                    
                    if skipInvalidCleanEvents:
                        isCleanSegmentValid = isAbpSegmentValidNumpy(abpSeg)
                        clean_events_valid.append(isCleanSegmentValid)
                        if debug:
                            print(f'{caseid}: clean segment valid: {isCleanSegmentValid}, {startIndex}, {endIndex}, {abpSeg.shape}')
                    else:
                        clean_events_valid.append(True)

            i += 10
            if segFound:
                i = segmentEnd + 1

        if debug:
            print(f"IOH Events for case {caseid}: {iohEvents}")
            print(f"Clean Events for case {caseid}: {cleanEvents}")

        positiveSegments = []
        negativeSegments = []

        # THIRD PASS
        # in the third pass, we will use the collections of ioh event windows to generate our actual extracted segments based on our prediction window (positive labels)
        for i in range(0, len(iohEvents)):
            # Don't extract segments from invalid IOH event windows.
            if not ioh_events_valid[i]:
                continue

            if debug:
                print(f"Checking event {iohEvents[i]}")
            # we want to review current event boundaries, as well as previous event boundaries if available
            event = iohEvents[i]
            previousEvent = None
            if i > 0:
                previousEvent = iohEvents[i - 1]

            for predWindow in ALL_PREDICTION_WINDOWS:
                if debug:
                    print(f"Checking event {iohEvents[i]} for pred {predWindow}")
                iohEventStart = event[0]
                predictiveSegmentEnd = event[0] - (predWindow*60)
                predictiveSegmentStart = predictiveSegmentEnd - 60

                if (predictiveSegmentStart < 0):
                    # don't rewind before the beginning of the track
                    if debug:
                        print(f"Checking event {iohEvents[i]} for pred {predWindow} - exit, before beginning")
                    continue
                elif (predictiveSegmentStart < trackStartIndex):
                    # don't rewind before the beginning of signal in track
                    if debug:
                        print(f"Checking event {iohEvents[i]} for pred {predWindow} - exit, before track start")
                    continue
                elif previousEvent is not None:
                    # does this event window come before or during the previous event?
                    overlapFound = False
                    # case 1: starts during an event
                    if predictiveSegmentStart >= previousEvent[0] and predictiveSegmentStart < previousEvent[1]:
                        overlapFound = True
                    # case 2: ends during an event
                    elif iohEventStart >= previousEvent[0] and iohEventStart < previousEvent[1]:
                        overlapFound = True
                    # case 3: event occurs entirely inside of the window
                    elif predictiveSegmentStart < previousEvent[0] and iohEventStart > previousEvent[1]:
                        overlapFound = True
                    # do not extract a case if we overlap witha nother IOH
                    if overlapFound:
                        if debug:
                            print(f"Checking event {iohEvents[i]} for pred {predWindow} - exit, overlap with earlier segment")
                        continue

                # track the positive segment
                positiveSegments.append((predictiveSegmentStart, predictiveSegmentEnd, predWindow,
                    abp[predictiveSegmentStart*ABP_ECG_SRATE_HZ:predictiveSegmentEnd*ABP_ECG_SRATE_HZ],
                    ecg[predictiveSegmentStart*ABP_ECG_SRATE_HZ:predictiveSegmentEnd*ABP_ECG_SRATE_HZ],
                    eeg[predictiveSegmentStart*EEG_SRATE_HZ:predictiveSegmentEnd*EEG_SRATE_HZ]))

        # FOURTH PASS
        # in the fourth and final pass, we will use the collections of clean event windows to generate our actual extracted segments based (negative labels)
        for i in range(0, len(cleanEvents)):
            # Don't extract segments from invalid clean event windows.
            if not clean_events_valid[i]:
                continue
            
            # everything will be 30 minutes long at least
            event = cleanEvents[i]
            # choose sample 1 @ 10 minutes
            # choose sample 2 @ 15 minutes
            # choose sample 3 @ 20 minutes
            timeAtTen = event[0] + 600
            timeAtFifteen = event[0] + 900
            timeAtTwenty = event[0] + 1200

            negativeSegments.append((timeAtTen, timeAtTen + 60, 0,
                                   abp[timeAtTen*ABP_ECG_SRATE_HZ:(timeAtTen + 60)*ABP_ECG_SRATE_HZ],
                                   ecg[timeAtTen*ABP_ECG_SRATE_HZ:(timeAtTen + 60)*ABP_ECG_SRATE_HZ],
                                   eeg[timeAtTen*EEG_SRATE_HZ:(timeAtTen + 60)*EEG_SRATE_HZ]))
            negativeSegments.append((timeAtFifteen, timeAtFifteen + 60, 0,
                                   abp[timeAtFifteen*ABP_ECG_SRATE_HZ:(timeAtFifteen + 60)*ABP_ECG_SRATE_HZ],
                                   ecg[timeAtFifteen*ABP_ECG_SRATE_HZ:(timeAtFifteen + 60)*ABP_ECG_SRATE_HZ],
                                   eeg[timeAtFifteen*EEG_SRATE_HZ:(timeAtFifteen + 60)*EEG_SRATE_HZ]))
            negativeSegments.append((timeAtTwenty, timeAtTwenty + 60, 0,
                                   abp[timeAtTwenty*ABP_ECG_SRATE_HZ:(timeAtTwenty + 60)*ABP_ECG_SRATE_HZ],
                                   ecg[timeAtTwenty*ABP_ECG_SRATE_HZ:(timeAtTwenty + 60)*ABP_ECG_SRATE_HZ],
                                   eeg[timeAtTwenty*EEG_SRATE_HZ:(timeAtTwenty + 60)*EEG_SRATE_HZ]))

        if returnSegments:
            positiveSegmentsMap[caseid] = positiveSegments
            negativeSegmentsMap[caseid] = negativeSegments
            iohEventsMap[caseid] = iohEvents
            cleanEventsMap[caseid] = cleanEvents
        
        saveCaseSegments(caseid, positiveSegments, negativeSegments, 9, debug=debug, forceWrite=forceWrite)

        #if debug:
        print(f'{caseid}: positiveSegments: {len(positiveSegments)}, negativeSegments: {len(negativeSegments)}')

    return positiveSegmentsMap, negativeSegmentsMap, iohEventsMap, cleanEventsMap

Case Extraction - Generage Segments Needed For Training¶

Ensure that all needed segments are in place for the cases that are being used. If data is already stored on disk this method returns immediately.

In [39]:
print('Time to extract segments!')
Time to extract segments!
In [40]:
MANUAL_EXTRACT=True
SKIP_INVALID_CLEAN_EVENTS=True
SKIP_INVALID_IOH_EVENTS=True

if MANUAL_EXTRACT:
    mycoi = cases_of_interest_idx
    #mycoi = cases_of_interest_idx[:2800]
    #mycoi = [1]

    cnt = 0
    mod = 0
    for ci in mycoi:
        cnt += 1
        if mod % 100 == 0:
            print(f'count processed: {mod}, current case index: {ci}')
        try:
            p, n, i, c = extract_segments([ci], debug=False, checkCache=True, 
                                          forceWrite=True, returnSegments=False, 
                                          skipInvalidCleanEvents=SKIP_INVALID_CLEAN_EVENTS,
                                          skipInvalidIohEvents=SKIP_INVALID_IOH_EVENTS)
            p = None
            n = None
            i = None
            c = None
        except:
            print(f'error on extract segment: {ci}')
        mod += 1
    print(f'extracted: {cnt}')
count processed: 0, current case index: 1
count processed: 100, current case index: 229
count processed: 200, current case index: 481
count processed: 300, current case index: 740
count processed: 400, current case index: 954
count processed: 500, current case index: 1160
count processed: 600, current case index: 1367
count processed: 700, current case index: 1595
count processed: 800, current case index: 1822
count processed: 900, current case index: 2055
count processed: 1000, current case index: 2317
count processed: 1100, current case index: 2533
count processed: 1200, current case index: 2775
count processed: 1300, current case index: 3014
count processed: 1400, current case index: 3218
count processed: 1500, current case index: 3442
count processed: 1600, current case index: 3682
count processed: 1700, current case index: 3879
count processed: 1800, current case index: 4109
count processed: 1900, current case index: 4347
count processed: 2000, current case index: 4603
count processed: 2100, current case index: 4830
count processed: 2200, current case index: 5072
count processed: 2300, current case index: 5314
count processed: 2400, current case index: 5568
count processed: 2500, current case index: 5793
count processed: 2600, current case index: 6017
count processed: 2700, current case index: 6248
extracted: 2763

Track and Segment Validity Checks¶

In [41]:
def printAbp(case_id_to_check, plot_invalid_only=False):
        vf_path = f'{VITAL_MINI}/{case_id_to_check:04d}_mini.vital'
        
        if not os.path.isfile(vf_path):
              return
        
        vf = vitaldb.VitalFile(vf_path)
        abp = vf.to_numpy(TRACK_NAMES[0], 1/500)
        
        print(f'Case {case_id_to_check}')
        print(f'ABP Shape: {abp.shape}')

        print(f'nanmin: {np.nanmin(abp)}')
        print(f'nanmean: {np.nanmean(abp)}')
        print(f'nanmax: {np.nanmax(abp)}')
        
        is_valid = isAbpSegmentValidNumpy(abp, debug=True)
        print(f'valid: {is_valid}')

        if plot_invalid_only and is_valid:
            return
            
        plt.figure(figsize=(20, 5))
        plt_color = 'C0' if is_valid else 'red'
        plt.plot(abp, plt_color)
        plt.title(f'ABP - Entire Track - Case {case_id_to_check} - {abp.shape[0] / 500} seconds')
        plt.axhline(y = 65, color = 'maroon', linestyle = '--')
        plt.show()
In [42]:
def printSegments(segmentsMap, case_id_to_check, print_label, normalize=False):
    for (x1, x2, r, abp, ecg, eeg) in segmentsMap[case_id_to_check]:
        print(f'{print_label}: Case {case_id_to_check}')
        print(f'lookback window: {r} min')
        print(f'start time: {x1}')
        print(f'end time: {x2}')
        print(f'length: {x2 - x1} sec')
        
        print(f'ABP Shape: {abp.shape}')
        print(f'ECG Shape: {ecg.shape}')
        print(f'EEG Shape: {eeg.shape}')

        print(f'nanmin: {np.nanmin(abp)}')
        print(f'nanmean: {np.nanmean(abp)}')
        print(f'nanmax: {np.nanmax(abp)}')
        
        is_valid = isAbpSegmentValidNumpy(abp, debug=True)
        print(f'valid: {is_valid}')

        # ABP normalization
        x_abp = np.copy(abp)
        if normalize:
            x_abp -= 65
            x_abp /= 65

        plt.figure(figsize=(20, 5))
        plt_color = 'C0' if is_valid else 'red'
        plt.plot(x_abp, plt_color)
        plt.title('ABP')
        plt.axhline(y = 65, color = 'maroon', linestyle = '--')
        plt.show()

        plt.figure(figsize=(20, 5))
        plt.plot(ecg, 'teal')
        plt.title('ECG')
        plt.show()

        plt.figure(figsize=(20, 5))
        plt.plot(eeg, 'indigo')
        plt.title('EEG')
        plt.show()

        print()
In [43]:
def printEvents(abp_raw, eventsMap, case_id_to_check, print_label, normalize=False):
    for (x1, x2) in eventsMap[case_id_to_check]:
        print(f'{print_label}: Case {case_id_to_check}')
        print(f'start time: {x1}')
        print(f'end time: {x2}')
        print(f'length: {x2 - x1} sec')

        abp = abp_raw[x1*500:x2*500]
        print(f'ABP Shape: {abp.shape}')

        print(f'nanmin: {np.nanmin(abp)}')
        print(f'nanmean: {np.nanmean(abp)}')
        print(f'nanmax: {np.nanmax(abp)}')
        
        is_valid = isAbpSegmentValidNumpy(abp, debug=True)
        print(f'valid: {is_valid}')

        # ABP normalization
        x_abp = np.copy(abp)
        if normalize:
            x_abp -= 65
            x_abp /= 65

        plt.figure(figsize=(20, 5))
        plt_color = 'C0' if is_valid else 'red'
        plt.plot(x_abp, plt_color)
        plt.title('ABP')
        plt.axhline(y = 65, color = 'maroon', linestyle = '--')
        plt.show()

        print()
In [44]:
def moving_average(x, seconds=60):
    w = seconds * 500
    return np.convolve(np.squeeze(x), np.ones(w), 'valid') / w
In [45]:
def printAbpOverlay(
    case_id_to_check,
    positiveSegmentsMap,
    negativeSegmentsMap,
    iohEventsMap,
    cleanEventsMap,
    movingAverage=False
):
    def overlay_segments(plt, segmentsMap, color, linestyle, positive=False):
        for (x1, x2, r, abp, ecg, eeg) in segmentsMap:
            sx1 = x1*500
            sx2 = x2*500
            mycolor = color
            if positive:
                if r == 3:
                    mycolor = 'red'
                elif r == 5:
                    mycolor = 'crimson'
                elif r == 10:
                    mycolor = 'tomato'
                else:
                    mycolor = 'salmon'
            plt.axvline(x = sx1, color = mycolor, linestyle = linestyle)
            plt.axvline(x = sx2, color = mycolor, linestyle = linestyle)
            plt.axvspan(sx1, sx2, facecolor = mycolor, alpha = 0.1)

    def overlay_events(plt, eventsMap, color, linestyle):
        for (x1, x2) in eventsMap:
            sx1 = x1*500
            sx2 = x2*500
            plt.axvline(x = sx1, color = color, linestyle = linestyle)
            plt.axvline(x = sx2, color = color, linestyle = linestyle)
            plt.axvspan(sx1, sx2, facecolor = color, alpha = 0.1)
    
    vf_path = f'{VITAL_MINI}/{case_id_to_check:04d}_mini.vital'

    if not os.path.isfile(vf_path):
          return

    vf = vitaldb.VitalFile(vf_path)
    abp = vf.to_numpy(TRACK_NAMES[0], 1/500)
    
    abp_mov_avg = None
    if movingAverage:
        abp_mov_avg = moving_average(abp)

    print(f'Case {case_id_to_check}')
    print(f'ABP Shape: {abp.shape}')

    print(f'nanmin: {np.nanmin(abp)}')
    print(f'nanmean: {np.nanmean(abp)}')
    print(f'nanmax: {np.nanmax(abp)}')

    is_valid = isAbpSegmentValidNumpy(abp, debug=True)
    print(f'valid: {is_valid}')

    plt.figure(figsize=(24, 8))
    plt_color = 'C0' if is_valid else 'red'
    plt.plot(abp, plt_color)
    plt.title(f'ABP - Entire Track - Case {case_id_to_check} - {abp.shape[0] / 500} seconds')
    plt.axhline(y = 65, color = 'maroon', linestyle = '--')
    
    if movingAverage:
        plt.plot(abp_mov_avg, 'maroon')

    # https://matplotlib.org/stable/gallery/lines_bars_and_markers/linestyles.html#linestyles
    
    overlay_segments(plt, positiveSegmentsMap[case_id_to_check], 'crimson', (0, (1, 1)), positive=True)
    
    overlay_segments(plt, negativeSegmentsMap[case_id_to_check], 'teal', (0, (1, 1)))

    overlay_events(plt, iohEventsMap[case_id_to_check], 'brown', '-')
    
    overlay_events(plt, cleanEventsMap[case_id_to_check], 'teal', '-')

    plt.show()

Reality Check All Cases¶

In [46]:
# Global flag to control creating track and segment plots.
# These plots are expensive to create, but very interesting.
# Disable when training in bulk to speed up notebook processing.
PERFORM_TRACK_VALIDITY_CHECKS = False
In [47]:
# Check if all ABPs are well formed. Fast load and scan of the raw track data for ABP.
DISPLAY_REALITY_CHECK_ABP=True
DISPLAY_REALITY_CHECK_ABP_FIRST_ONLY=True

if PERFORM_TRACK_VALIDITY_CHECKS and DISPLAY_REALITY_CHECK_ABP:
    for case_id_to_check in cases_of_interest_idx:
        printAbp(case_id_to_check, plot_invalid_only=False)
        
        if DISPLAY_REALITY_CHECK_ABP_FIRST_ONLY:
            break

Validate Malformed Vital Files - Missing One Or More Tracks¶

In [48]:
# These are Vital Files removed because of malformed ABP waveforms.
DISPLAY_MALFORMED_ABP=True
DISPLAY_MALFORMED_ABP_FIRST_ONLY=True

if PERFORM_TRACK_VALIDITY_CHECKS and DISPLAY_MALFORMED_ABP:
    malformed_case_ids = pd.read_csv('malformed_tracks_filter.csv', header=None, names=['caseid']).set_index('caseid').index

    for case_id_to_check in malformed_case_ids:
        printAbp(case_id_to_check)
        
        if DISPLAY_MALFORMED_ABP_FIRST_ONLY:
            break

Validate Cases With No Segments Saved¶

In [49]:
DISPLAY_NO_SEGMENTS_CASES=True
DISPLAY_NO_SEGMENTS_CASES_FIRST_ONLY=True

if PERFORM_TRACK_VALIDITY_CHECKS and DISPLAY_NO_SEGMENTS_CASES:
    no_segments_case_ids = [3413, 3476, 3533, 3992, 4328, 4648, 4703, 4733, 5130, 5501, 5693, 5908]

    for case_id_to_check in no_segments_case_ids:
        printAbp(case_id_to_check)
        
        if DISPLAY_NO_SEGMENTS_CASES_FIRST_ONLY:
            break

Select Case For Segment Extraction Validation¶

Generate segment data for one or more cases. Perform a deep analysis of event and segment quality.

In [50]:
#mycoi = cases_of_interest_idx
my_cases_of_interest_idx = cases_of_interest_idx[:10]
#mycoi = [1]

# Note: By default, match extract segments processing block above.
# However, regenerate data real time to allow seeing impacts on segment extraction.
# This is why both checkCache and forceWrite are false by default.
positiveSegmentsMap, negativeSegmentsMap, iohEventsMap, cleanEventsMap = None, None, None, None

if PERFORM_TRACK_VALIDITY_CHECKS:
    positiveSegmentsMap, negativeSegmentsMap, iohEventsMap, cleanEventsMap = \
        extract_segments(my_cases_of_interest_idx, debug=False,
                         checkCache=False, forceWrite=False, returnSegments=True,
                         skipInvalidCleanEvents=SKIP_INVALID_CLEAN_EVENTS,
                         skipInvalidIohEvents=SKIP_INVALID_IOH_EVENTS)

Select a specific case to perform detailed low level analysis.

In [51]:
case_id_to_check = my_cases_of_interest_idx[0]

print(case_id_to_check)
print()

if PERFORM_TRACK_VALIDITY_CHECKS:
    print((
        len(positiveSegmentsMap[case_id_to_check]),
        len(negativeSegmentsMap[case_id_to_check]),
        len(iohEventsMap[case_id_to_check]),
        len(cleanEventsMap[case_id_to_check])
    ))
1

In [52]:
if PERFORM_TRACK_VALIDITY_CHECKS:
    printAbp(case_id_to_check)

Positive Events for Case - IOH Events¶

Used to define the range in front of which positive segments will be extracted. Positive samples happen in front of this region.

In [53]:
tmp_abp = None

if PERFORM_TRACK_VALIDITY_CHECKS:
    tmp_vf_path = f'{VITAL_MINI}/{case_id_to_check:04d}_mini.vital'
    tmp_vf = vitaldb.VitalFile(tmp_vf_path)
    tmp_abp = tmp_vf.to_numpy(TRACK_NAMES[0], 1/500)
In [54]:
if PERFORM_TRACK_VALIDITY_CHECKS:
    printEvents(tmp_abp, iohEventsMap, case_id_to_check, 'IOH Event Segment', normalize=False)

Negative Events for Case - Non-IOH Events¶

Used to define the range from in which negative segments will be extracted. Negative samples happen within this region.

In [55]:
if PERFORM_TRACK_VALIDITY_CHECKS:
    printEvents(tmp_abp, cleanEventsMap, case_id_to_check, 'Clean Event Segment', normalize=False)

Positive Segments for Case - IOH Events Predicted Using These¶

One minute regions sampled and used for training the model for "positive" events.

In [56]:
if PERFORM_TRACK_VALIDITY_CHECKS:
    printSegments(positiveSegmentsMap, case_id_to_check, 'Positive Segment - IOH Event', normalize=False)

Negative Segments for Case - Non-IOH Events Predicted Using These¶

One minute regions sampled and used for training the model for "negative" events.

In [57]:
if PERFORM_TRACK_VALIDITY_CHECKS:
    printSegments(negativeSegmentsMap, case_id_to_check, 'Negative Segment - Non-Event', normalize=False)

Overlay Plot of All Events and Segments Extracted¶

For each of the cases in my_cases_of_interest_idx overlay the results of event and segment extraction.

In [58]:
DISPLAY_OVERLAY_CHECK_ABP=True
DISPLAY_OVERLAY_CHECK_ABP_FIRST_ONLY=True

if PERFORM_TRACK_VALIDITY_CHECKS and DISPLAY_OVERLAY_CHECK_ABP:
    for case_id_to_check in my_cases_of_interest_idx:
        printAbpOverlay(case_id_to_check, positiveSegmentsMap, 
                        negativeSegmentsMap, iohEventsMap, cleanEventsMap, movingAverage=True)
        
        if DISPLAY_OVERLAY_CHECK_ABP_FIRST_ONLY:
            break
In [59]:
# free memory
del tmp_abp

Generate Train/Val/Test Splits¶

In [60]:
def get_segment_attributes_from_filename(file_path):
    pieces = os.path.basename(file_path).split('_')
    case = int(pieces[0])
    startX = int(pieces[1])
    predWindow = int(pieces[2])
    label = pieces[3].replace('.h5', '')
    return (case, startX, predWindow, label)
In [61]:
count_negative_samples = 0
count_positive_samples = 0

samples = []

from glob import glob
seg_folder = f"{VITAL_EXTRACTED_SEGMENTS}"
filenames = [y for x in os.walk(seg_folder) for y in glob(os.path.join(x[0], '*.h5'))]

for filename in filenames:
    (case, start_x, pred_window, label) = get_segment_attributes_from_filename(filename)
    #print((case, start_x, pred_window, label))
    
    # only load cases for cases of interest; this folder could have segments for hundreds of cases
    if case not in cases_of_interest_idx:
        continue

    #PREDICTION_WINDOW = 3
    if pred_window == 0 or pred_window == PREDICTION_WINDOW or PREDICTION_WINDOW == 'ALL':
        #print((case, start_x, pred_window, label))
        if label == 'True':
            count_positive_samples += 1
        else:
            count_negative_samples += 1
        sample = (filename, label)
        samples.append(sample)

print()
print(f"samples loaded:         {len(samples):5} ")
print(f'count negative samples: {count_negative_samples:5}')
print(f'count positive samples: {count_positive_samples:5}')
samples loaded:         19676 
count negative samples: 14298
count positive samples:  5378
In [62]:
# Divide by cases
sample_cases = defaultdict(lambda: []) 

for fn, _ in samples:
    (case, start_x, pred_window, label) = get_segment_attributes_from_filename(fn)
    sample_cases[case].append((fn, label))

# understand any missing cases of interest
sample_cases_idx = pd.Index(sample_cases.keys())
missing_case_ids = cases_of_interest_idx.difference(sample_cases_idx)
print(f'cases with no samples: {missing_case_ids.shape[0]}')
print(f'    {missing_case_ids}')
print()
    
# Split data into training, validation, and test sets
# Use 6:1:3 ratio and prevent samples from a single case from being split across different sets
# Note: number of samples at each time point is not the same, because the first event can occur before the 3/5/10/15 minute mark

# Set target sizes
train_ratio = 0.6
val_ratio = 0.1
test_ratio = 1 - train_ratio - val_ratio # ensure ratios sum to 1

# Split samples into train and other
sample_cases_train, sample_cases_other = train_test_split(list(sample_cases.keys()), test_size=(1 - train_ratio), random_state=RANDOM_SEED)

# Split other into val and test
sample_cases_val, sample_cases_test = train_test_split(sample_cases_other, test_size=(test_ratio / (1 - train_ratio)), random_state=RANDOM_SEED)

# Check how many samples are in each set
print(f'Train/Val/Test Summary by Cases')
print(f"Train cases:  {len(sample_cases_train):5}, ({len(sample_cases_train) / len(sample_cases):.2%})")
print(f"Val cases:    {len(sample_cases_val):5}, ({len(sample_cases_val) / len(sample_cases):.2%})")
print(f"Test cases:   {len(sample_cases_test):5}, ({len(sample_cases_test) / len(sample_cases):.2%})")
print(f"Total cases:  {(len(sample_cases_train) + len(sample_cases_val) + len(sample_cases_test)):5}")
cases with no samples: 20
    Index([ 149,  561,  864,  979, 1158, 1174, 1317, 1957, 2221, 2830, 2859, 4380,
       4755, 4783, 5080, 5204, 5266, 5755, 6275, 6360],
      dtype='int64')

Train/Val/Test Summary by Cases
Train cases:   1645, (59.97%)
Val cases:      274, (9.99%)
Test cases:     824, (30.04%)
Total cases:   2743
In [63]:
sample_cases_train = set(sample_cases_train)
sample_cases_val = set(sample_cases_val)
sample_cases_test = set(sample_cases_test)

samples_train = []
samples_val = []
samples_test = []

for cid, segs in sample_cases.items():
    if cid in sample_cases_train:
        for seg in segs:
            samples_train.append(seg)
    if cid in sample_cases_val:
        for seg in segs:
            samples_val.append(seg)
    if cid in sample_cases_test:
        for seg in segs:
            samples_test.append(seg)
            
# Check how many samples are in each set
print(f'Train/Val/Test Summary by Events')
print(f"Train events:  {len(samples_train):5}, ({len(samples_train) / len(samples):.2%})")
print(f"Val events:    {len(samples_val):5}, ({len(samples_val) / len(samples):.2%})")
print(f"Test events:   {len(samples_test):5}, ({len(samples_test) / len(samples):.2%})")
print(f"Total events:  {(len(samples_train) + len(samples_val) + len(samples_test)):5}")
Train/Val/Test Summary by Events
Train events:  11725, (59.59%)
Val events:     2013, (10.23%)
Test events:    5938, (30.18%)
Total events:  19676

Validate train/val/test Splits¶

In [64]:
PRINT_ALL_CASE_SPLIT_DETAILS = False

case_to_sample_distribution = defaultdict(lambda: {'train': [0, 0], 'val': [0, 0], 'test': [0, 0]})

def populate_case_to_sample_distribution(mysamples, idx):
    neg = 0
    pos = 0
    
    for fn, _ in mysamples:
        (case, start_x, pred_window, label) = get_segment_attributes_from_filename(fn)
        slot = 0 if label == 'False' else 1
        case_to_sample_distribution[case][idx][slot] += 1
        if slot == 0:
            neg += 1
        else:
            pos += 1
                
    return (neg, pos)

train_neg, train_pos = populate_case_to_sample_distribution(samples_train, 'train')
val_neg, val_pos     = populate_case_to_sample_distribution(samples_val,   'val')
test_neg, test_pos   = populate_case_to_sample_distribution(samples_test,  'test')

print(f'Total Cases Present: {len(case_to_sample_distribution):5}')
print()

train_tot = train_pos + train_neg
val_tot = val_pos + val_neg
test_tot = test_pos + test_neg
print(f'Train: P: {train_pos:5} ({(train_pos/train_tot):.2}), N: {train_neg:5} ({(train_neg/train_tot):.2})')
print(f'Val:   P: {val_pos:5} ({(val_pos/val_tot):.2}), N: {val_neg:5} ({(val_neg/val_tot):.2})')
print(f'Test:  P: {test_pos:5} ({(test_pos/test_tot):.2}), N: {test_neg:5}  ({(test_neg/test_tot):.2})')
print()

total_pos = train_pos + val_pos + test_pos
total_neg = train_neg + val_neg + test_neg
total = total_pos + total_neg
print(f'P/N Ratio: {(total_pos)}:{(total_neg)}')
print(f'P Percent: {(total_pos/total):.2}')
print(f'N Percent: {(total_neg/total):.2}')
print()

if PRINT_ALL_CASE_SPLIT_DETAILS:
    for ci in sorted(case_to_sample_distribution.keys()):
        print(f'{ci}: {case_to_sample_distribution[ci]}')
Total Cases Present:  2743

Train: P:  3221 (0.27), N:  8504 (0.73)
Val:   P:   591 (0.29), N:  1422 (0.71)
Test:  P:  1566 (0.26), N:  4372  (0.74)

P/N Ratio: 5378:14298
P Percent: 0.27
N Percent: 0.73

In [65]:
def check_data_leakage(full_data, train_data, val_data, test_data):
    # Convert to sets for easier operations
    full_data_set = set(full_data)
    train_data_set = set(train_data)
    val_data_set = set(val_data)
    test_data_set = set(test_data)

    # Check if train, val, test are subsets of full_data
    if not train_data_set.issubset(full_data_set):
        return "Train data has leakage"
    if not val_data_set.issubset(full_data_set):
        return "Validation data has leakage"
    if not test_data_set.issubset(full_data_set):
        return "Test data has leakage"

    # Check if train, val, test are disjoint
    if train_data_set & val_data_set:
        return "Train and validation data are not disjoint"
    if train_data_set & test_data_set:
        return "Train and test data are not disjoint"
    if val_data_set & test_data_set:
        return "Validation and test data are not disjoint"

    return "No data leakage detected"

# Usage
print(check_data_leakage(list(sample_cases.keys()), sample_cases_train, sample_cases_val, sample_cases_test))
No data leakage detected
In [66]:
# Create vitalDataset class
class vitalDataset(Dataset):
    def __init__(self, samples, normalize_abp=False):
        self.samples = samples
        self.normalize_abp = normalize_abp

    def __len__(self):
        return len(self.samples)

    def __getitem__(self, idx):
        # Get metadata for this event
        segment = self.samples[idx]

        file_path = segment[0]
        label = (segment[1] == "True" or segment[1] == "True.vital")

        (abp, ecg, eeg) = get_segment_data(file_path)

        if abp is None or eeg is None or ecg is None:
            return (np.zeros(30000), np.zeros(30000), np.zeros(7680), 0)
        
        if self.normalize_abp:
            abp -= 65
            abp /= 65

        return abp, ecg, eeg, label
In [67]:
NORMALIZE_ABP = False

train_dataset = vitalDataset(samples_train, NORMALIZE_ABP)
val_dataset = vitalDataset(samples_val, NORMALIZE_ABP)
test_dataset = vitalDataset(samples_test, NORMALIZE_ABP)

train/val/test Splits Summary Statistics¶

In [68]:
def generate_nan_means(mydataset):
    xs = np.zeros(len(mydataset))
    ys = np.zeros(len(mydataset), dtype=int)

    for i, (abp, ecg, eeg, y) in enumerate(iter(mydataset)):
        xs[i] = np.nanmean(abp)
        ys[i] = int(y)

    return pd.DataFrame({'abp_nanmean': xs, 'label': ys})
In [69]:
def generate_nan_means_summaries(tr, va, te, group='all'):
    if group == 'all':
        return pd.DataFrame({
            'train': tr.describe()['abp_nanmean'],
            'validation': va.describe()['abp_nanmean'],
            'test': te.describe()['abp_nanmean']
        })
    
    mytr = tr.reset_index()
    myva = va.reset_index()
    myte = te.reset_index()
    
    label_flag = True if group == 'positive' else False
    
    return pd.DataFrame({
        'train':      mytr[mytr['label'] == label_flag].describe()['abp_nanmean'],
        'validation': myva[myva['label'] == label_flag].describe()['abp_nanmean'],
        'test':       myte[myte['label'] == label_flag].describe()['abp_nanmean']
    })
In [70]:
def plot_nan_means(df, plot_label):
    mydf = df.reset_index()

    maxCases = 'ALL' if MAX_CASES is None else MAX_CASES
    plot_title = f'{plot_label} - ABP nanmean Values, {PREDICTION_WINDOW} Minutes, {maxCases} Cases'
    
    ax = mydf[mydf['label'] == False].plot.scatter(
        x='index', y='abp_nanmean', color='DarkBlue', label='Negative', 
        title=plot_title, figsize=(16,9))

    negative_median = mydf[mydf['label'] == False]['abp_nanmean'].median()
    ax.axhline(y=negative_median, color='DarkBlue', linestyle='--', label='Negative Median')
    
    mydf[mydf['label'] == True].plot.scatter(
        x='index', y='abp_nanmean', color='DarkOrange', label='Positive', ax=ax);
    
    positive_median = mydf[mydf['label'] == True]['abp_nanmean'].median()
    ax.axhline(y=positive_median, color='DarkOrange', linestyle='--', label='Positive Median')
    
    ax.legend(loc='upper right')
In [71]:
def plot_nan_means_hist(df):
    df.plot.hist(column=['abp_nanmean'], by='label', bins=50, figsize=(10, 8));
In [72]:
train_abp_nanmeans = generate_nan_means(train_dataset)
val_abp_nanmeans = generate_nan_means(val_dataset)
test_abp_nanmeans = generate_nan_means(test_dataset)

ABP Nanmean Summaries¶

In [73]:
generate_nan_means_summaries(train_abp_nanmeans, val_abp_nanmeans, test_abp_nanmeans)
Out[73]:
train validation test
count 11725.000000 2013.000000 5938.000000
mean 85.342557 84.527469 85.337452
std 12.102408 11.928181 12.139388
min 65.136129 65.176681 65.178063
25% 75.843523 75.141869 75.794924
50% 83.549179 82.839065 83.643432
75% 93.382970 92.584281 92.977931
max 138.285504 131.649859 147.949437
In [74]:
generate_nan_means_summaries(train_abp_nanmeans, val_abp_nanmeans, test_abp_nanmeans, group='positive')
Out[74]:
train validation test
count 3221.000000 591.000000 1566.000000
mean 76.393673 75.830934 76.462263
std 9.120690 8.735726 9.256418
min 65.136129 65.176681 65.178063
25% 70.014729 69.719051 69.994147
50% 74.056950 73.944380 74.136967
75% 80.011449 79.447594 80.095860
max 132.143619 124.815472 136.381225
In [75]:
generate_nan_means_summaries(train_abp_nanmeans, val_abp_nanmeans, test_abp_nanmeans, group='negative')
Out[75]:
train validation test
count 8504.000000 1422.000000 4372.000000
mean 88.732062 88.141852 88.516442
std 11.341231 11.191253 11.452285
min 65.225560 66.221575 65.476802
25% 80.095975 79.646864 79.987240
50% 87.345195 86.884530 87.118146
75% 95.959147 95.516197 95.679384
max 138.285504 131.649859 147.949437

ABP Nanmean Histograms¶

In [76]:
plot_nan_means_hist(train_abp_nanmeans)
In [77]:
plot_nan_means_hist(val_abp_nanmeans)
In [78]:
plot_nan_means_hist(test_abp_nanmeans)

ABP Nanmean Scatter Plots¶

In [79]:
plot_nan_means(train_abp_nanmeans, 'Train')
In [80]:
plot_nan_means(val_abp_nanmeans, 'Validation')
In [81]:
plot_nan_means(test_abp_nanmeans, 'Test')
In [82]:
# Cleanup
del train_abp_nanmeans
del val_abp_nanmeans
del test_abp_nanmeans

Classification Studies¶

Check if data can be easily classified using non-deep learning methods. Create a balanced sample of IOH and non-IOH events and use a simple classifier to see if the data can be easily separated. Datasets which can be easily separated by non-deep learning methods should also be easily classified by deep learning models.

In [83]:
MAX_CLASSIFICATION_SAMPLES = 250
MAX_SAMPLE_SIZE = 1600
classification_sample_size = MAX_SAMPLE_SIZE if len(samples) >= MAX_SAMPLE_SIZE else len(samples)

classification_samples = random.sample(samples, classification_sample_size)

positive_samples = []
negative_samples = []

for sample in classification_samples:
    (sampleAbp, sampleEcg, sampleEeg) = get_segment_data(sample[0])
    
    if sample[1] == "True":
        positive_samples.append([sample[0], True, sampleAbp, sampleEcg, sampleEeg])
    else:
        negative_samples.append([sample[0], False, sampleAbp, sampleEcg, sampleEeg])

positive_samples = pd.DataFrame(positive_samples, columns=["file_path", "segment_label", "segment_abp", "segment_ecg", "segment_eeg"])
negative_samples = pd.DataFrame(negative_samples, columns=["file_path", "segment_label", "segment_abp", "segment_ecg", "segment_eeg"])

total_to_sample_pos = MAX_CLASSIFICATION_SAMPLES if len(positive_samples) >= MAX_CLASSIFICATION_SAMPLES else len(positive_samples)
total_to_sample_neg = MAX_CLASSIFICATION_SAMPLES if len(negative_samples) >= MAX_CLASSIFICATION_SAMPLES else len(negative_samples)

# Select up to 150 random samples where segment_label is True
positive_samples = positive_samples.sample(total_to_sample_pos, random_state=RANDOM_SEED)
# Select up to 150 random samples where segment_label is False
negative_samples = negative_samples.sample(total_to_sample_neg, random_state=RANDOM_SEED)

print(f'positive_samples: {len(positive_samples)}')
print(f'negative_samples: {len(negative_samples)}')

# Combine the positive and negative samples
samples_balanced = pd.concat([positive_samples, negative_samples])
positive_samples: 250
negative_samples: 250

Define function to build data for study. Each waveform field can be enabled or disabled:

In [84]:
def get_x_y(samples, use_abp, use_ecg, use_eeg):
    # Create X and y, using data from `samples_balanced` and the `use_abp`, `use_ecg`, and `use_eeg` variables
    X = []
    y = []
    for i in range(len(samples)):
        row = samples.iloc[i]
        sample = np.array([])
        if use_abp:
            if len(row['segment_abp']) != 30000:
                print(len(row['segment_abp']))
            sample = np.append(sample, row['segment_abp'])
        if use_ecg:
            if len(row['segment_ecg']) != 30000:
                print(len(row['segment_ecg']))
            sample = np.append(sample, row['segment_ecg'])
        if use_eeg:
            if len(row['segment_eeg']) != 7680:
                print(len(row['segment_eeg']))
            sample = np.append(sample, row['segment_eeg'])
        X.append(sample)
        # Convert the label from boolean to 0 or 1
        y.append(int(row['segment_label']))
    return X, y

KNN¶

Define KNN run. This is configurable to enable or disable different data channels so that we can study them individually or together:

In [85]:
N_NEIGHBORS = 20

def run_knn(samples, use_abp, use_ecg, use_eeg):
    # Get samples
    X,y = get_x_y(samples, use_abp, use_ecg, use_eeg)

    # Split samples into train and val
    knn_X_train, knn_X_test, knn_y_train, knn_y_test = train_test_split(X, y, test_size=0.2, random_state=RANDOM_SEED)

    # Normalize the data
    scaler = StandardScaler()
    scaler.fit(knn_X_train)

    knn_X_train = scaler.transform(knn_X_train)
    knn_X_test = scaler.transform(knn_X_test)

    # Initialize the KNN classifier
    knn = KNeighborsClassifier(n_neighbors=N_NEIGHBORS)

    # Train the KNN classifier
    knn.fit(knn_X_train, knn_y_train)

    # Make predictions on the test set
    knn_y_pred = knn.predict(knn_X_test)

    # Evaluate the KNN classifier
    print(f"ABP: {use_abp}, ECG: {use_ecg}, EEG: {use_eeg}")
    print(f"Confusion matrix:\n{confusion_matrix(knn_y_test, knn_y_pred)}")
    print(f"Classification report:\n{classification_report(knn_y_test, knn_y_pred)}")

Study each waveform independently, then ABP+EEG (which had best results in paper), and ABP+ECG+EEG:

In [86]:
run_knn(samples_balanced, use_abp=True, use_ecg=False, use_eeg=False)
run_knn(samples_balanced, use_abp=False, use_ecg=True, use_eeg=False)
run_knn(samples_balanced, use_abp=False, use_ecg=False, use_eeg=True)
run_knn(samples_balanced, use_abp=True, use_ecg=False, use_eeg=True)
run_knn(samples_balanced, use_abp=True, use_ecg=True, use_eeg=True)
ABP: True, ECG: False, EEG: False
Confusion matrix:
[[48  6]
 [16 30]]
Classification report:
              precision    recall  f1-score   support

           0       0.75      0.89      0.81        54
           1       0.83      0.65      0.73        46

    accuracy                           0.78       100
   macro avg       0.79      0.77      0.77       100
weighted avg       0.79      0.78      0.78       100

ABP: False, ECG: True, EEG: False
Confusion matrix:
[[32 22]
 [21 25]]
Classification report:
              precision    recall  f1-score   support

           0       0.60      0.59      0.60        54
           1       0.53      0.54      0.54        46

    accuracy                           0.57       100
   macro avg       0.57      0.57      0.57       100
weighted avg       0.57      0.57      0.57       100

ABP: False, ECG: False, EEG: True
Confusion matrix:
[[ 2 52]
 [ 0 46]]
Classification report:
              precision    recall  f1-score   support

           0       1.00      0.04      0.07        54
           1       0.47      1.00      0.64        46

    accuracy                           0.48       100
   macro avg       0.73      0.52      0.36       100
weighted avg       0.76      0.48      0.33       100

ABP: True, ECG: False, EEG: True
Confusion matrix:
[[42 12]
 [ 7 39]]
Classification report:
              precision    recall  f1-score   support

           0       0.86      0.78      0.82        54
           1       0.76      0.85      0.80        46

    accuracy                           0.81       100
   macro avg       0.81      0.81      0.81       100
weighted avg       0.81      0.81      0.81       100

ABP: True, ECG: True, EEG: True
Confusion matrix:
[[39 15]
 [ 6 40]]
Classification report:
              precision    recall  f1-score   support

           0       0.87      0.72      0.79        54
           1       0.73      0.87      0.79        46

    accuracy                           0.79       100
   macro avg       0.80      0.80      0.79       100
weighted avg       0.80      0.79      0.79       100

Based on the data above, the ABP data alone is strongly predictive based on the macro average F1-score of 0.90. The ECG and EEG data are weakly predictive with F1 scores of 0.33 and 0.64, respectively. The ABP+EEG data is also strongly predictive with an F1 score of 0.88, and ABP+ECG+EEG data somewhat predictive with an F1 score of 0.79.

Models based on ABP data alone, or ABP+EEG data are expected to train easily with good performance. The other signals appear to mostly add noise and are not strongly predictive. This agrees with the results from the paper.

t-SNE¶

Define t-SNE run. This is configurable to enable or disable different data channels so that we can study them individually or together:

In [87]:
def run_tsne(samples, use_abp, use_ecg, use_eeg):
    # Get samples
    X,y = get_x_y(samples, use_abp, use_ecg, use_eeg)
    
    # Convert X and y to numpy arrays
    X = np.array(X)
    y = np.array(y)

    # Run t-SNE on the samples
    tsne = TSNE(n_components=len(np.unique(y)), random_state=RANDOM_SEED)
    X_tsne = tsne.fit_transform(X)
    
    # Create a scatter plot of the t-SNE representation
    plt.figure(figsize=(16, 9))
    plt.title(f"use_abp={use_abp}, use_ecg={use_ecg}, use_eeg={use_eeg}")
    for i, label in enumerate(set(y)):
        plt.scatter(X_tsne[y == label, 0], X_tsne[y == label, 1], label=label)
    plt.legend()
    plt.show()

Study each waveform independently, then ABP+EEG (which had best results in paper), and ABP+ECG+EEG:

In [88]:
run_tsne(samples_balanced, use_abp=True, use_ecg=False, use_eeg=False)
run_tsne(samples_balanced, use_abp=False, use_ecg=True, use_eeg=False)
run_tsne(samples_balanced, use_abp=False, use_ecg=False, use_eeg=True)
run_tsne(samples_balanced, use_abp=True, use_ecg=False, use_eeg=True)
run_tsne(samples_balanced, use_abp=True, use_ecg=True, use_eeg=True)

Based on the plots above, it appears that ABP alone, ABP+EEG and ABP+ECG+EEG are somewhat separable, though with outliers, and should be trainable by our model. The ECG and EEG data are not easily separable from the other data. This agrees with the results from the paper.

In [89]:
# cleanup
del samples_balanced

Model¶

The model implementation is based on the CNN architecture described in Jo Y-Y et al. (2022). It is designed to handle 1, 2, or 3 signal categories simultaneously, allowing for flexible model configurations based on different combinations of physiological signals:

  • ABP alone
  • EEG alone
  • ECG alone
  • ABP + EEG
  • ABP + ECG
  • EEG + ECG
  • ABP + EEG + ECG

Model Architecture¶

The architecture, as depicted in Figure 2 from the original paper, utilizes a ResNet-based approach tailored for time-series data from different physiological signals. The model architecture is adapted to handle varying input signal frequencies, with specific hyperparameters for each signal type, particularly EEG, due to its distinct characteristics compared to ABP and ECG. A diagram of the model architecture is shown below:

Architecture of the hypotension risk prediction model using multiple waveforms

Each input signal is processed through a sequence of 12 7-layer residual blocks, followed by a flattening process and a linear transformation to produce a 32-dimensional feature vector per signal type. These vectors are then concatenated (if multiple signals are used) and passed through two additional linear layers to produce a single output vector, representing the IOH index. A threshold is determined experimentally in order to minimize the differene between the sensitivity and specificity and is applied to this index to perform binary classification for predicting IOH events.

The hyperparameters for the residual blocks are specified in Supplemental Table 1 from the original paper and vary for different signal type.

A forward pass through the model passes through 85 layers before concatenation, followed by two more linear layers and finally a sigmoid activation layer to produce the prediction measure.

Residual Block Definition¶

Each residual block consists of the following seven layers:

  • Batch normalization
  • ReLU
  • Dropout (0.5)
  • 1D convolution
  • Batch normalization
  • ReLU
  • 1D convolution

Skip connections are included to aid in gradient flow during training, with optional 1D convolution in the skip connection to align dimensions.

Residual Block Hyperparameters¶

The hyperparameters are detailed in Supplemental Table 1 of the original paper. A screenshot of these hyperparameters is provided for reference below:

Supplemental Table 1 from original paper

Note: Please be aware of a transcription error in the original paper's Supplemental Table 1 for the ECG+ABP configuration in Residual Blocks 11 and 12, where the output size should be 469 6 instead of the reported 496 6.

Training Objectives¶

Our model uses binary cross entropy as the loss function and Adam as the optimizer, consistent with the original study. The learning rate is set at 0.0001, and training is configured to run for up to 100 epochs, with early stopping implemented if no improvement in loss is observed over five consecutive epochs.

In [90]:
# First define the residual block which is reused 12x for each data track for each sample.
# Second define the primary model.
class ResidualBlock(nn.Module):
    def __init__(self, in_features: int, out_features: int, in_channels: int, out_channels: int, kernel_size: int, stride: int = 1, size_down: bool = False, ignoreSkipConnection: bool = False) -> None:
        super(ResidualBlock, self).__init__()
        
        self.ignoreSkipConnection = ignoreSkipConnection

        # calculate the appropriate padding required to ensure expected sequence lengths out of each residual block
        padding = int((((stride-1)*in_features)-stride+kernel_size)/2)

        self.size_down = size_down
        self.bn1 = nn.BatchNorm1d(in_channels)
        self.relu = nn.ReLU()
        self.dropout = nn.Dropout(0.5)
        self.conv1 = nn.Conv1d(in_channels, out_channels, kernel_size=kernel_size, stride=1, padding=padding, bias=False)
        self.bn2 = nn.BatchNorm1d(out_channels)
        self.conv2 = nn.Conv1d(out_channels, out_channels, kernel_size=kernel_size, stride=1, padding=padding, bias=False)
        
        self.residualConv = nn.Conv1d(in_channels, out_channels, kernel_size=kernel_size, stride=1, padding=padding, bias=False)

        # unclear where in sequence this should take place. Size down expressed in Supplemental table S1
        if self.size_down:
            pool_padding = (1 if (in_features % 2 > 0) else 0)
            self.downsample = nn.MaxPool1d(kernel_size=2, stride=2, padding = pool_padding)
        
    def forward(self, x: torch.Tensor) -> torch.Tensor:
        identity = x
        
        out = self.bn1(x)
        out = self.relu(out)
        out = self.dropout(out)
        out = self.conv1(out)

        if self.size_down:
            out = self.downsample(out)

        out = self.bn2(out)
        out = self.relu(out)
        out = self.conv2(out)
        
        if not self.ignoreSkipConnection:
          if out.shape != identity.shape:
              # run the residual through a convolution when necessary
              identity = self.residualConv(identity)
            
              outlen = np.prod(out.shape)
              idlen = np.prod(identity.shape)
              # downsample when required
              if idlen > outlen:
                  identity = self.downsample(identity)
              # match dimensions
              identity = identity.reshape(out.shape)

          # add the residual       
          out += identity

        return  out

class HypotensionCNN(nn.Module):
    def __init__(self, useAbp: bool = True, useEeg: bool = False, useEcg: bool = False, device: str = "cpu", nResiduals: int = 12, ignoreSkipConnection: bool = False, useSigmoid: bool = True) -> None:
        assert useAbp or useEeg or useEcg, "At least one data track must be used"
        assert nResiduals > 0 and nResiduals <= 12, "Number of residual blocks must be between 1 and 12"
        super(HypotensionCNN, self).__init__()

        self.device = device

        self.useAbp = useAbp
        self.useEeg = useEeg
        self.useEcg = useEcg
        self.nResiduals = nResiduals
        self.useSigmoid = useSigmoid

        # Size of the concatenated output from the residual blocks
        concatSize = 0

        if useAbp:
          self.abpBlocks = []
          self.abpMultipliers = [1, 2, 2, 2, 2, 2, 4, 4, 4, 4, 4, 6, 6]
          self.abpSizes = [30000, 15000, 15000, 7500, 7500, 3750, 3750, 1875, 1875, 938, 938, 469, 469]
          for i in range(self.nResiduals):
            downsample = i % 2 == 0
            self.abpBlocks.append(ResidualBlock(self.abpSizes[i], self.abpSizes[i+1], self.abpMultipliers[i], self.abpMultipliers[i+1], 15 if i < 6 else 7, 1, downsample, ignoreSkipConnection))
          self.abpResiduals = nn.Sequential(*self.abpBlocks)
          self.abpFc = nn.Linear(self.abpMultipliers[self.nResiduals] * self.abpSizes[self.nResiduals], 32)
          concatSize += 32
        
        if useEcg:
          self.ecgBlocks = []
          self.ecgMultipliers = [1, 2, 2, 2, 2, 2, 4, 4, 4, 4, 4, 6, 6]
          self.ecgSizes = [30000, 15000, 15000, 7500, 7500, 3750, 3750, 1875, 1875, 938, 938, 469, 469]

          for i in range(self.nResiduals):
            downsample = i % 2 == 0
            self.ecgBlocks.append(ResidualBlock(self.ecgSizes[i], self.ecgSizes[i+1], self.ecgMultipliers[i], self.ecgMultipliers[i+1], 15 if i < 6 else 7, 1, downsample, ignoreSkipConnection))
          self.ecgResiduals = nn.Sequential(*self.ecgBlocks)
          self.ecgFc = nn.Linear(self.ecgMultipliers[self.nResiduals] * self.ecgSizes[self.nResiduals], 32)
          concatSize += 32

        if useEeg:
          self.eegBlocks = []
          self.eegMultipliers = [1, 2, 2, 2, 2, 2, 4, 4, 4, 4, 4, 6, 6]
          self.eegSizes = [7680, 3840, 3840, 1920, 1920, 960, 960, 480, 480, 240, 240, 120, 120]

          for i in range(self.nResiduals):
            downsample = i % 2 == 0
            self.eegBlocks.append(ResidualBlock(self.eegSizes[i], self.eegSizes[i+1], self.eegMultipliers[i], self.eegMultipliers[i+1], 7 if i < 6 else 3, 1, downsample, ignoreSkipConnection))
          self.eegResiduals = nn.Sequential(*self.eegBlocks)
          self.eegFc = nn.Linear(self.eegMultipliers[self.nResiduals] * self.eegSizes[self.nResiduals], 32)
          concatSize += 32

        self.fullLinear1 = nn.Linear(concatSize, 16)
        self.fullLinear2 = nn.Linear(16, 1)
        self.sigmoid = nn.Sigmoid()


    def forward(self, abp: torch.Tensor, eeg: torch.Tensor, ecg: torch.Tensor) -> torch.Tensor:
        batchSize = len(abp)

        # conditionally operate ABP, EEG, and ECG networks
        tensors = []
        if self.useAbp:
          self.abpResiduals.to(self.device)
          abp = self.abpResiduals(abp)
          totalLen = np.prod(abp.shape)
          abp = torch.reshape(abp, (batchSize, int(totalLen / batchSize)))
          abp = self.abpFc(abp)
          tensors.append(abp)

        if self.useEeg:
          self.eegResiduals.to(self.device)
          eeg = self.eegResiduals(eeg)
          totalLen = np.prod(eeg.shape)
          eeg = torch.reshape(eeg, (batchSize, int(totalLen / batchSize)))
          eeg = self.eegFc(eeg)
          tensors.append(eeg)
        
        if self.useEcg:
          self.ecgResiduals.to(self.device)
          ecg = self.ecgResiduals(ecg)
          totalLen = np.prod(ecg.shape)
          ecg = torch.reshape(ecg, (batchSize, int(totalLen / batchSize)))
          ecg = self.ecgFc(ecg)
          tensors.append(ecg)

        # concatenate the tensors along dimension 1 if there's more than one, otherwise use the single tensor
        merged = torch.cat(tensors, dim=1) if len(tensors) > 1 else tensors[0]

        totalLen = np.prod(merged.shape)
        merged = torch.reshape(merged, (batchSize, int(totalLen / batchSize)))
        out = self.fullLinear1(merged)
        out = self.fullLinear2(out)
        if self.useSigmoid:
            out = self.sigmoid(out)

        # We should not be seeing NaNs! If we are, there is a problem upstream.
        #out = torch.nan_to_num(out)
        return out

Training¶

As discussed earlier, our model uses binary cross entropy as the loss function and Adam as the optimizer, consistent with the original study. The learning rate is set at 0.0001, and training is configured to run for up to 100 epochs, with early stopping implemented if no improvement in loss is observed over five consecutive epochs.

In [91]:
def train_model_one_iter(model, device, loss_func, optimizer, train_loader):
    model.train()
    train_losses = []
    
    for abp, ecg, eeg, label in tqdm(train_loader):
        batch = len(abp)
        abp = abp.reshape(batch, 1, -1).type(torch.FloatTensor).to(device)
        ecg = ecg.reshape(batch, 1, -1).type(torch.FloatTensor).to(device)
        eeg = eeg.reshape(batch, 1, -1).type(torch.FloatTensor).to(device)
        label = label.type(torch.float).reshape(batch, 1).to(device)

        optimizer.zero_grad()
        mdl = model(abp, eeg, ecg)
        loss = loss_func(torch.nan_to_num(mdl), label)
        loss.backward()
        optimizer.step()
        train_losses.append(loss.cpu().data.numpy())
    return np.mean(train_losses)
In [92]:
def evaluate_model(model, loss_func, val_loader):
    model.eval()
    val_losses = []
    for abp, ecg, eeg, label in tqdm(val_loader):
        batch = len(abp)

        abp = abp.reshape(batch, 1, -1).type(torch.FloatTensor).to(device)
        ecg = ecg.reshape(batch, 1, -1).type(torch.FloatTensor).to(device)
        eeg = eeg.reshape(batch, 1, -1).type(torch.FloatTensor).to(device)
        label = label.type(torch.float).reshape(batch, 1).to(device)

        mdl = model(abp, eeg, ecg)
        loss = loss_func(torch.nan_to_num(mdl), label)
        val_losses.append(loss.cpu().data.numpy())
    return np.mean(val_losses)
In [93]:
def plot_losses(train_losses, val_losses, best_epoch, experimentName):
    print()
    print(f'Plot Validation and Loss Values from Training')
    print(f'  Epoch with best Validation Loss:  {best_epoch:3}, {val_losses[best_epoch]:.4}')

    # Create x-axis values for epochs
    epochs = range(0, len(train_losses))

    plt.figure(figsize=(16, 9))

    # Plot the training and validation losses
    plt.plot(epochs, train_losses, 'b', label='Training Loss')
    plt.plot(epochs, val_losses, 'r', label='Validation Loss')

    # Add a vertical bar at the best_epoch
    plt.axvline(x=best_epoch, color='g', linestyle='--', label='Best Epoch')

    # Shade everything to the right of the best_epoch a light red
    plt.axvspan(best_epoch, max(epochs), facecolor='r', alpha=0.1)

    # Add labels and title
    plt.xlabel('Epochs')
    plt.ylabel('Loss')
    plt.title(experimentName)

    # Add legend
    plt.legend(loc='upper right')

    # Save plot to disk
    plt.savefig(os.path.join(VITAL_RUNS, f'{experimentName}_losses.png'))

    # Show the plot
    plt.show()
In [94]:
def eval_model(model, device, dataloader, loss_func, print_detailed: bool = False):
    model.eval()
    model = model.to(device)
    total_loss = 0
    all_predictions = []
    all_labels = []

    with torch.no_grad():
        for abp, ecg, eeg, label in tqdm(dataloader):
            batch = len(abp)
    
            abp = torch.nan_to_num(abp.reshape(batch, 1, -1)).type(torch.FloatTensor).to(device)
            ecg = torch.nan_to_num(ecg.reshape(batch, 1, -1)).type(torch.FloatTensor).to(device)
            eeg = torch.nan_to_num(eeg.reshape(batch, 1, -1)).type(torch.FloatTensor).to(device)
            label = label.type(torch.float).reshape(batch, 1).to(device)
   
            pred = model(abp, eeg, ecg)
            loss = loss_func(pred, label)
            total_loss += loss.item()

            all_predictions.append(pred.detach().cpu().numpy())
            all_labels.append(label.detach().cpu().numpy())

    # Flatten the lists
    all_predictions = np.concatenate(all_predictions).flatten()
    all_labels = np.concatenate(all_labels).flatten()

    # Calculate AUROC and AUPRC
    # y_true, y_pred
    auroc = roc_auc_score(all_labels, all_predictions)
    precision, recall, _ = precision_recall_curve(all_labels, all_predictions)
    auprc = auc(recall, precision)

    # Determine the optimal threshold, which is argmin(abs(sensitivity - specificity)) per the paper
    thresholds = np.linspace(0, 1, 101) # 0 to 1 in 0.01 steps
    min_diff = float('inf')
    optimal_sensitivity = None
    optimal_specificity = None
    optimal_threshold = None

    for threshold in thresholds:
        all_predictions_binary = (all_predictions > threshold).astype(int)

        tn, fp, fn, tp = confusion_matrix(all_labels, all_predictions_binary).ravel()
        sensitivity = tp / (tp + fn)
        specificity = tn / (tn + fp)
        diff = abs(sensitivity - specificity)

        if diff < min_diff:
            min_diff = diff
            optimal_threshold = threshold
            optimal_sensitivity = sensitivity
            optimal_specificity = specificity

    avg_loss = total_loss / len(dataloader)
    
    # accuracy
    predictions_binary = (all_predictions > optimal_threshold).astype(int)
    accuracy = np.mean(predictions_binary == all_labels)

    if print_detailed:
        print(f"Predictions: {all_predictions}")
        print(f"Labels: {all_labels}")
    print(f"Loss: {avg_loss}")
    print(f"AUROC: {auroc}")
    print(f"AUPRC: {auprc}")
    print(f"Sensitivity: {optimal_sensitivity}")
    print(f"Specificity: {optimal_specificity}")
    print(f"Threshold: {optimal_threshold}")
    print(f"Accuracy:  {accuracy}")

    return all_predictions, all_labels, avg_loss, auroc, auprc, \
        optimal_sensitivity, optimal_specificity, optimal_threshold, accuracy
In [95]:
def print_all_evals(model, models, device, val_loader, test_loader, loss_func, print_detailed: bool = False):
    print()
    print(f'Generate AUROC/AUPRC for Each Intermediate Model')
    print()
    val_aurocs = []
    val_auprcs = []
    val_accs   = []

    test_aurocs = []
    test_auprcs = []
    test_accs   = []

    for mod in models:
        model.load_state_dict(torch.load(mod))
        #model.train(False)
        model.eval()
        print(f'Intermediate Model:')
        print(f'  {mod}')
    
        # validation loop
        print("AUROC/AUPRC on Validation Data")
        all_predictions, all_labels, avg_loss, valid_auroc, valid_auprc, \
        optimal_sensitivity, optimal_specificity, optimal_threshold, valid_accuracy = \
            eval_model(model, device, val_loader, loss_func, print_detailed)

        val_aurocs.append(valid_auroc)
        val_auprcs.append(valid_auprc)
        val_accs.append(valid_accuracy)
        print()
    
        # test loop
        print("AUROC/AUPRC on Test Data")
        all_predictions, all_labels, avg_loss, test_auroc, test_auprc, \
        optimal_sensitivity, optimal_specificity, optimal_threshold, test_accuracy = \
            eval_model(model, device, test_loader, loss_func, print_detailed)

        test_aurocs.append(test_auroc)
        test_auprcs.append(test_auprc)
        test_accs.append(test_accuracy)
        print()
    
    return val_aurocs, val_auprcs, val_accs, test_aurocs, test_auprcs, test_accs
In [96]:
def plot_auroc_auprc(val_losses, val_aurocs, val_auprcs, val_accs, 
                                      test_aurocs, test_auprcs, test_accs, all_models, best_epoch, experimentName):
    print()
    print(f'Plot AUROC/AUPRC for Each Intermediate Model')
    
    # Create x-axis values for epochs
    epochs = range(0, len(val_aurocs))

    # Find model with highest AUROC
    np_test_aurocs = np.array(test_aurocs)
    test_auroc_idx = np.argmax(np_test_aurocs)
    test_accs_idx  = np.argmax(test_accs)

    print(f'  Epoch with best Validation Loss:     {best_epoch:3}, {val_losses[best_epoch]:.4}')
    print(f'  Epoch with best model Test AUROC:    {test_auroc_idx:3}, {np_test_aurocs[test_auroc_idx]:.4}')
    print(f'  Epoch with best model Test Accuracy: {test_accs_idx:3}, {test_accs[test_accs_idx]:.4}')
    #print(f'Best Model on Validation Loss:')
    #print(f'  {all_models[test_auroc_idx]}')
    #print(f'Best Model on Test AUROC:')
    #print(f'  {all_models[best_epoch]}')
    print()

    plt.figure(figsize=(16, 9))

    # Plots
    plt.plot(epochs, val_aurocs, 'C0', label='AUROC - Validation')
    plt.plot(epochs, test_aurocs, 'C1', label='AUROC - Test')

    plt.plot(epochs, val_auprcs, 'C2', label='AUPRC - Validation')
    plt.plot(epochs, test_auprcs, 'C3', label='AUPRC - Test')
    
    plt.plot(epochs, val_accs, 'C4', label='Accuracy - Validation')
    plt.plot(epochs, test_accs, 'C5', label='Accuracy - Test')

    # Add vertical bars
    plt.axvline(x=best_epoch, color='g', linestyle='--', label='Best Epoch - Validation Loss')
    plt.axvline(x=test_auroc_idx, color='maroon', linestyle='--', label='Best Epoch - Test AUROC')
    plt.axvline(x=test_accs_idx, color='violet', linestyle='--', label='Best Epoch - Test Accuracy')

    # Shade everything to the right of the best_model a light red
    plt.axvspan(test_auroc_idx, max(epochs), facecolor='r', alpha=0.1)

    # Add labels and title
    plt.xlabel('Epochs')
    plt.ylabel('AUROC / AUPRC')
    plt.title('Validation and Test AUROC and AUPRC by Model Iteration Across Training')

    # Add legend
    plt.legend(loc='right')

    # Save plot to disk
    plt.savefig(os.path.join(VITAL_RUNS, f'{experimentName}_all_stats.png'))
    
    # Show the plot
    plt.show()

    return np_test_aurocs, test_auroc_idx
In [97]:
def run_experiment(
    experimentNamePrefix: str = None,
    useAbp: bool = True, 
    useEeg: bool = False, 
    useEcg: bool = False, 
    nResiduals: int = 12, 
    skip_connection: bool = False, 
    batch_size: int = 64, 
    learning_rate: float = 1e-4, 
    weight_decay: float = 0.0, 
    balance_labels: bool = False,
    pos_weight: float = None,
    max_epochs: int = 100, 
    patience: int = 25, 
    device: str = "cpu"
):
    reset_random_state()

    time_start = timer()

    experimentName = ""

    experimentOptions = [experimentNamePrefix, 'ABP', 'EEG', 'ECG', 'SKIPCONNECTION']
    experimentValues = [experimentNamePrefix is not None, useAbp, useEeg, useEcg, skip_connection]
    experimentFlags = [name for name, value in zip(experimentOptions, experimentValues) if value]
    if experimentFlags:
        experimentName = "_".join(experimentFlags)

    experimentName = f"{experimentName}_{nResiduals}_RESIDUAL_BLOCKS_{batch_size}_BATCH_SIZE_{learning_rate:.0e}_LEARNING_RATE"

    if weight_decay is not None and weight_decay != 0.0:
        experimentName = f"{experimentName}_{weight_decay:.0e}_WEIGHT_DECAY"

    predictionWindow = 'ALL' if PREDICTION_WINDOW == 'ALL' else f'{PREDICTION_WINDOW:03}'
    experimentName = f"{experimentName}_{predictionWindow}_MINS"

    maxCases = '_ALL' if MAX_CASES is None else f'{MAX_CASES:04}'
    experimentName = f"{experimentName}_{maxCases}_MAX_CASES"
    
    # Add unique uuid8 suffix to experiment name
    experimentName = f"{experimentName}_{uuid.uuid4().hex[:8]}"

    # default label split based on empirical data
    my_pos_weight = 4.0
    if balance_labels and pos_weight is not None:
        my_pos_weight = pos_weight

    # Fork stdout to file and console
    with ForkedStdout(os.path.join(VITAL_RUNS, f'{experimentName}.log')):
        print(f"Experiment Setup")
        print(f'  name:              {experimentName}')
        print(f'  prediction_window: {predictionWindow}')
        print(f'  max_cases:         {maxCases}')
        print(f'  use_abp:           {useAbp}')
        print(f'  use_eeg:           {useEeg}')
        print(f'  use_ecg:           {useEcg}')
        print(f'  n_residuals:       {nResiduals}')
        print(f'  skip_connection:   {skip_connection}')
        print(f'  batch_size:        {batch_size}')
        print(f'  learning_rate:     {learning_rate}')
        print(f'  weight_decay:      {weight_decay}')
        print(f'  balance_labels:    {balance_labels}')
        if balance_labels:
            print(f'  pos_weight:        {my_pos_weight}')
        print(f'  max_epochs:        {max_epochs}')
        print(f'  patience:          {patience}')
        print(f'  device:            {device}')
        print()

        train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=batch_size, shuffle=True)
        val_loader = torch.utils.data.DataLoader(val_dataset, batch_size=batch_size, shuffle=True)
        test_loader = torch.utils.data.DataLoader(test_dataset, batch_size=batch_size, shuffle=False)

        # Disable final sigmoid activation for BCEWithLogitsLoss
        model = HypotensionCNN(useAbp, useEeg, useEcg, device, nResiduals, skip_connection, useSigmoid=(not balance_labels))
        model = model.to(device)
    
        if balance_labels:
            # Only the weight for the positive class
            loss_func = nn.BCEWithLogitsLoss(pos_weight=torch.tensor([my_pos_weight]).to(device))
        else:
            loss_func = nn.BCELoss()
        optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate, weight_decay=weight_decay)

    
        print(f'Model Architecture')
        print(model)
        print()

        print(f'Training Loop')
        # Training loop
        best_epoch = 0
        train_losses = []
        val_losses = []
        best_loss = float('inf')
        no_improve_epochs = 0
        model_path = os.path.join(VITAL_MODELS, f"{experimentName}.model")

        all_models = []

        for i in range(max_epochs):
            # Train the model and get the training loss
            train_loss = train_model_one_iter(model, device, loss_func, optimizer, train_loader)
            train_losses.append(train_loss)
            # Calculate validate loss
            val_loss = evaluate_model(model, loss_func, val_loader)
            val_losses.append(val_loss)
            print(f"[{datetime.now()}] Completed epoch {i} with training loss {train_loss:.8f}, validation loss {val_loss:.8f}")

            # Save all intermediary models.
            tmp_model_path = os.path.join(VITAL_MODELS, f"{experimentName}_{i:04d}.model")
            torch.save(model.state_dict(), tmp_model_path)
            all_models.append(tmp_model_path)
  
            # Check if validation loss has improved
            if val_loss < best_loss:
                best_epoch = i
                best_loss = val_loss
                no_improve_epochs = 0
                torch.save(model.state_dict(), model_path)
                print(f"Validation loss improved to {val_loss:.8f}. Model saved.")
            else:
                no_improve_epochs += 1
                print(f"No improvement in validation loss. {no_improve_epochs} epochs without improvement.")

            # exit early if no improvement in loss over last 'patience' epochs
            if no_improve_epochs >= patience:
                print("Early stopping due to no improvement in validation loss.")
                break

        # Load best model from disk
        #print()
        #if os.path.exists(model_path):
        #    model.load_state_dict(torch.load(model_path))
        #    print(f"Loaded best model from disk from epoch {best_epoch}.")
        #else:
        #    print("No saved model found for f{experimentName}.")

        #model.train(False)

        # Plot the training and validation losses across all training epochs.
        plot_losses(train_losses, val_losses, best_epoch, experimentName)

        # Generate AUROC/AUPRC for each intermediate model generated across training epochs.
        val_aurocs, val_auprcs, val_accs, test_aurocs, test_auprcs, test_accs = \
            print_all_evals(model, all_models, device, val_loader, test_loader, loss_func, print_detailed=False)

        # Find model with highest AUROC. Plot AUROC/AUPRC across all epochs.
        np_test_aurocs, test_auroc_idx = plot_auroc_auprc(val_losses, val_aurocs, val_auprcs, val_accs, \
                                        test_aurocs, test_auprcs, test_accs, all_models, best_epoch, experimentName)

        ## AUROC / AUPRC - Model with Best Validation Loss
        best_model_val_loss = all_models[best_epoch]
    
        print(f'AUROC/AUPRC Plots - Best Model Based on Validation Loss')
        print(f'  Epoch with best Validation Loss:  {best_epoch:3}, {val_losses[best_epoch]:.4}')
        print(f'  Best Model Based on Validation Loss:')
        print(f'    {best_model_val_loss}')
        print()
        print(f'Generate Stats Based on Test Data')
        model.load_state_dict(torch.load(best_model_val_loss))
        #model.train(False)
        model.eval()
    
        best_model_val_test_predictions, best_model_val_test_labels, test_loss, \
            best_model_val_test_auroc, best_model_val_test_auprc, test_sensitivity, test_specificity, \
            best_model_val_test_threshold, best_model_val_accuracy = \
                eval_model(model, device, test_loader, loss_func, print_detailed=False)

        # y_test, y_pred
        display = RocCurveDisplay.from_predictions(
            best_model_val_test_labels,
            best_model_val_test_predictions,
            plot_chance_level=True
        )
        # Save plot to disk and show
        plt.savefig(os.path.join(VITAL_RUNS, f'{experimentName}_val_auroc.png'))
        plt.show()

        print(f'best_model_val_test_auroc: {best_model_val_test_auroc}')

        best_model_val_test_predictions_binary = \
        (best_model_val_test_predictions > best_model_val_test_threshold).astype(int)

        # y_test, y_pred
        display = PrecisionRecallDisplay.from_predictions(
            best_model_val_test_labels, 
            best_model_val_test_predictions_binary,
            plot_chance_level=True
        )
        # Save plot to disk and show
        plt.savefig(os.path.join(VITAL_RUNS, f'{experimentName}_val_auprc.png'))
        plt.show()

        print(f'best_model_val_test_auprc: {best_model_val_test_auprc}')
        print()

        ## AUROC / AUPRC - Model with Best AUROC
        # Find model with highest AUROC
        best_model_auroc = all_models[test_auroc_idx]

        print(f'AUROC/AUPRC Plots - Best Model Based on Model AUROC')
        print(f'  Epoch with best model Test AUROC: {test_auroc_idx:3}, {np_test_aurocs[test_auroc_idx]:.4}')
        print(f'  Best Model Based on Model AUROC:')
        print(f'    {best_model_auroc}')
        print()
        print(f'Generate Stats Based on Test Data')
        model.load_state_dict(torch.load(best_model_auroc))
        #model.train(False)
        model.eval()
    
        best_model_auroc_test_predictions, best_model_auroc_test_labels, test_loss, \
            best_model_auroc_test_auroc, best_model_auroc_test_auprc, test_sensitivity, test_specificity, \
            best_model_auroc_test_threshold, best_model_auroc_accuracy = \
                eval_model(model, device, test_loader, loss_func, print_detailed=False)

        # y_test, y_pred
        display = RocCurveDisplay.from_predictions(
            best_model_auroc_test_labels,
            best_model_auroc_test_predictions,
            plot_chance_level=True
        )
        # Save plot to disk and show
        plt.savefig(os.path.join(VITAL_RUNS, f'{experimentName}_auroc_auroc.png'))
        plt.show()

        print(f'best_model_auroc_test_auroc: {best_model_auroc_test_auroc}')

        best_model_auroc_test_predictions_binary = \
            (best_model_auroc_test_predictions > best_model_auroc_test_threshold).astype(int)

        # y_test, y_pred
        display = PrecisionRecallDisplay.from_predictions(
            best_model_auroc_test_labels, 
            best_model_auroc_test_predictions_binary,
            plot_chance_level=True
        )
        # Save plot to disk and show
        plt.savefig(os.path.join(VITAL_RUNS, f'{experimentName}_auroc_auprc.png'))
        plt.show()

        print(f"best_model_auroc_test_auprc: {best_model_auroc_test_auprc}")
        print()
        
        time_delta = np.round(timer() - time_start, 3)
        print(f'Total Processing Time: {time_delta:.4f} sec')

SPLITS¶

In [98]:
print('Time to experiment!')
Time to experiment!
In [99]:
MULTI_RUN = True

ABP, EEG, and ECG Splits¶

In [100]:
RUN_ME = True

if RUN_ME:
    run_experiment(
        experimentNamePrefix=None, 
        useAbp=True, 
        useEeg=False, 
        useEcg=False,
        nResiduals=12, 
        skip_connection=False,
        batch_size=128,
        learning_rate=1e-4,
        weight_decay=1e-1,
        balance_labels=False,
        #pos_weight=2.0,
        pos_weight=None,
        max_epochs=200,
        patience=20,
        device=device
    )
Experiment Setup
  name:              ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f
  prediction_window: 003
  max_cases:         _ALL
  use_abp:           True
  use_eeg:           False
  use_ecg:           False
  n_residuals:       12
  skip_connection:   False
  batch_size:        128
  learning_rate:     0.0001
  weight_decay:      0.1
  balance_labels:    False
  max_epochs:        200
  patience:          20
  device:            mps

Model Architecture
HypotensionCNN(
  (abpResiduals): Sequential(
    (0): ResidualBlock(
      (bn1): BatchNorm1d(1, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (1): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (2): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (3): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (4): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (5): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (6): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (7): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (8): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=1, dilation=1, ceil_mode=False)
    )
    (9): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (10): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (11): ResidualBlock(
      (bn1): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
  )
  (abpFc): Linear(in_features=2814, out_features=32, bias=True)
  (fullLinear1): Linear(in_features=32, out_features=16, bias=True)
  (fullLinear2): Linear(in_features=16, out_features=1, bias=True)
  (sigmoid): Sigmoid()
)

Training Loop
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [01:01<00:00,  1.51it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.08it/s]
[2024-05-04 12:13:25.540119] Completed epoch 0 with training loss 0.50479114, validation loss 0.59283197
Validation loss improved to 0.59283197. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:48<00:00,  1.89it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.33it/s]
[2024-05-04 12:14:21.200221] Completed epoch 1 with training loss 0.44203359, validation loss 0.60219550
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:49<00:00,  1.88it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.25it/s]
[2024-05-04 12:15:17.381530] Completed epoch 2 with training loss 0.43507832, validation loss 0.59311742
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:50<00:00,  1.82it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.30it/s]
[2024-05-04 12:16:14.855486] Completed epoch 3 with training loss 0.43294263, validation loss 0.58645874
Validation loss improved to 0.58645874. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:50<00:00,  1.83it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.30it/s]
[2024-05-04 12:17:12.236554] Completed epoch 4 with training loss 0.43270713, validation loss 0.60151911
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:48<00:00,  1.91it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.37it/s]
[2024-05-04 12:18:07.169128] Completed epoch 5 with training loss 0.43106765, validation loss 0.59025657
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.92it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.28it/s]
[2024-05-04 12:19:02.156878] Completed epoch 6 with training loss 0.43024585, validation loss 0.56091154
Validation loss improved to 0.56091154. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:48<00:00,  1.91it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.32it/s]
[2024-05-04 12:19:57.273071] Completed epoch 7 with training loss 0.43008494, validation loss 0.59121054
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.93it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.39it/s]
[2024-05-04 12:20:51.741193] Completed epoch 8 with training loss 0.43055788, validation loss 0.57370067
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.92it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.35it/s]
[2024-05-04 12:21:46.551599] Completed epoch 9 with training loss 0.43016872, validation loss 0.56177199
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.92it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.35it/s]
[2024-05-04 12:22:41.195854] Completed epoch 10 with training loss 0.43024066, validation loss 0.60044646
No improvement in validation loss. 4 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:48<00:00,  1.91it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.33it/s]
[2024-05-04 12:23:36.165526] Completed epoch 11 with training loss 0.42765969, validation loss 0.57294196
No improvement in validation loss. 5 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.92it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.33it/s]
[2024-05-04 12:24:31.063791] Completed epoch 12 with training loss 0.42873782, validation loss 0.55371666
Validation loss improved to 0.55371666. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:48<00:00,  1.91it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.36it/s]
[2024-05-04 12:25:26.034093] Completed epoch 13 with training loss 0.42835206, validation loss 0.56574011
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:48<00:00,  1.91it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.36it/s]
[2024-05-04 12:26:21.003032] Completed epoch 14 with training loss 0.42863402, validation loss 0.56452662
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:48<00:00,  1.91it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.33it/s]
[2024-05-04 12:27:16.167746] Completed epoch 15 with training loss 0.42691943, validation loss 0.58567274
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:48<00:00,  1.91it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.36it/s]
[2024-05-04 12:28:11.234758] Completed epoch 16 with training loss 0.42684725, validation loss 0.54514873
Validation loss improved to 0.54514873. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:48<00:00,  1.91it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.37it/s]
[2024-05-04 12:29:06.104858] Completed epoch 17 with training loss 0.42635813, validation loss 0.53842008
Validation loss improved to 0.53842008. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:48<00:00,  1.91it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.37it/s]
[2024-05-04 12:30:00.964943] Completed epoch 18 with training loss 0.42482305, validation loss 0.63392067
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.93it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.35it/s]
[2024-05-04 12:30:55.555753] Completed epoch 19 with training loss 0.42596608, validation loss 0.61442971
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:51<00:00,  1.79it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.28it/s]
[2024-05-04 12:31:54.145976] Completed epoch 20 with training loss 0.42494941, validation loss 0.55087781
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:53<00:00,  1.73it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.37it/s]
[2024-05-04 12:32:54.199931] Completed epoch 21 with training loss 0.42591432, validation loss 0.52314520
Validation loss improved to 0.52314520. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:52<00:00,  1.77it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.31it/s]
[2024-05-04 12:33:53.222244] Completed epoch 22 with training loss 0.42269674, validation loss 0.56139046
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:52<00:00,  1.75it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.33it/s]
[2024-05-04 12:34:52.569785] Completed epoch 23 with training loss 0.42490616, validation loss 0.56838512
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:52<00:00,  1.75it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.32it/s]
[2024-05-04 12:35:52.178411] Completed epoch 24 with training loss 0.42309305, validation loss 0.51629579
Validation loss improved to 0.51629579. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:52<00:00,  1.75it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.34it/s]
[2024-05-04 12:36:51.589063] Completed epoch 25 with training loss 0.42370987, validation loss 0.54145443
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:54<00:00,  1.68it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.24it/s]
[2024-05-04 12:37:53.606491] Completed epoch 26 with training loss 0.42379802, validation loss 0.49854073
Validation loss improved to 0.49854073. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:51<00:00,  1.77it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.33it/s]
[2024-05-04 12:38:52.376195] Completed epoch 27 with training loss 0.42449340, validation loss 0.55802941
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:51<00:00,  1.78it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.33it/s]
[2024-05-04 12:39:51.029099] Completed epoch 28 with training loss 0.42629805, validation loss 0.55958241
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:51<00:00,  1.77it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.35it/s]
[2024-05-04 12:40:49.862826] Completed epoch 29 with training loss 0.42332026, validation loss 0.47960937
Validation loss improved to 0.47960937. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:51<00:00,  1.77it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.23it/s]
[2024-05-04 12:41:49.057624] Completed epoch 30 with training loss 0.42302525, validation loss 0.55196959
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:52<00:00,  1.76it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.29it/s]
[2024-05-04 12:42:48.269389] Completed epoch 31 with training loss 0.42343524, validation loss 0.54562604
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:52<00:00,  1.77it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.29it/s]
[2024-05-04 12:43:47.377221] Completed epoch 32 with training loss 0.42323759, validation loss 0.53088051
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:52<00:00,  1.75it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.27it/s]
[2024-05-04 12:44:47.186182] Completed epoch 33 with training loss 0.42392093, validation loss 0.52141893
No improvement in validation loss. 4 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:53<00:00,  1.74it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.33it/s]
[2024-05-04 12:45:47.093438] Completed epoch 34 with training loss 0.42253932, validation loss 0.52468097
No improvement in validation loss. 5 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:52<00:00,  1.76it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.37it/s]
[2024-05-04 12:46:46.172922] Completed epoch 35 with training loss 0.42170998, validation loss 0.53347945
No improvement in validation loss. 6 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:53<00:00,  1.71it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.29it/s]
[2024-05-04 12:47:47.154283] Completed epoch 36 with training loss 0.42146811, validation loss 0.52303553
No improvement in validation loss. 7 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:52<00:00,  1.75it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.34it/s]
[2024-05-04 12:48:46.671133] Completed epoch 37 with training loss 0.42438516, validation loss 0.56637657
No improvement in validation loss. 8 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:52<00:00,  1.76it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.27it/s]
[2024-05-04 12:49:46.017246] Completed epoch 38 with training loss 0.42334503, validation loss 0.51389486
No improvement in validation loss. 9 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:54<00:00,  1.70it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.24it/s]
[2024-05-04 12:50:47.507207] Completed epoch 39 with training loss 0.42097142, validation loss 0.48802203
No improvement in validation loss. 10 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:52<00:00,  1.74it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.27it/s]
[2024-05-04 12:51:47.519329] Completed epoch 40 with training loss 0.42214677, validation loss 0.49186763
No improvement in validation loss. 11 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:53<00:00,  1.73it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.34it/s]
[2024-05-04 12:52:47.653011] Completed epoch 41 with training loss 0.42327163, validation loss 0.49847946
No improvement in validation loss. 12 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:54<00:00,  1.68it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.26it/s]
[2024-05-04 12:53:49.388424] Completed epoch 42 with training loss 0.42109948, validation loss 0.53336817
No improvement in validation loss. 13 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:55<00:00,  1.66it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.40it/s]
[2024-05-04 12:54:51.500383] Completed epoch 43 with training loss 0.42315391, validation loss 0.49435580
No improvement in validation loss. 14 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:53<00:00,  1.73it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.31it/s]
[2024-05-04 12:55:51.536166] Completed epoch 44 with training loss 0.42124167, validation loss 0.47965047
No improvement in validation loss. 15 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:51<00:00,  1.78it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.40it/s]
[2024-05-04 12:56:49.992214] Completed epoch 45 with training loss 0.42108744, validation loss 0.51315790
No improvement in validation loss. 16 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:52<00:00,  1.76it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.17it/s]
[2024-05-04 12:57:49.557366] Completed epoch 46 with training loss 0.42139518, validation loss 0.48888656
No improvement in validation loss. 17 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:52<00:00,  1.77it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.42it/s]
[2024-05-04 12:58:48.235033] Completed epoch 47 with training loss 0.42109978, validation loss 0.46855354
Validation loss improved to 0.46855354. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:53<00:00,  1.71it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.36it/s]
[2024-05-04 12:59:49.010270] Completed epoch 48 with training loss 0.42055258, validation loss 0.49846146
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:53<00:00,  1.72it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.35it/s]
[2024-05-04 13:00:49.401631] Completed epoch 49 with training loss 0.42005107, validation loss 0.46868372
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:53<00:00,  1.73it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.18it/s]
[2024-05-04 13:01:49.996004] Completed epoch 50 with training loss 0.42103404, validation loss 0.47164094
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:52<00:00,  1.76it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.39it/s]
[2024-05-04 13:02:48.890418] Completed epoch 51 with training loss 0.42316121, validation loss 0.44910824
Validation loss improved to 0.44910824. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:54<00:00,  1.70it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.30it/s]
[2024-05-04 13:03:50.277437] Completed epoch 52 with training loss 0.42088220, validation loss 0.45445028
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:53<00:00,  1.71it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.31it/s]
[2024-05-04 13:04:51.048107] Completed epoch 53 with training loss 0.42217770, validation loss 0.46583056
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:52<00:00,  1.76it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.38it/s]
[2024-05-04 13:05:50.163679] Completed epoch 54 with training loss 0.42064807, validation loss 0.54869121
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:52<00:00,  1.75it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.38it/s]
[2024-05-04 13:06:49.535526] Completed epoch 55 with training loss 0.42116857, validation loss 0.51010048
No improvement in validation loss. 4 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:52<00:00,  1.75it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.27it/s]
[2024-05-04 13:07:49.200898] Completed epoch 56 with training loss 0.42040369, validation loss 0.46667710
No improvement in validation loss. 5 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:52<00:00,  1.76it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.33it/s]
[2024-05-04 13:08:48.401321] Completed epoch 57 with training loss 0.42186260, validation loss 0.48232618
No improvement in validation loss. 6 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:52<00:00,  1.74it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.15it/s]
[2024-05-04 13:09:48.861170] Completed epoch 58 with training loss 0.41950345, validation loss 0.50630331
No improvement in validation loss. 7 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:53<00:00,  1.71it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.35it/s]
[2024-05-04 13:10:49.640637] Completed epoch 59 with training loss 0.42069635, validation loss 0.47182485
No improvement in validation loss. 8 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:51<00:00,  1.77it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.36it/s]
[2024-05-04 13:11:48.486698] Completed epoch 60 with training loss 0.42140251, validation loss 0.50632972
No improvement in validation loss. 9 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:53<00:00,  1.73it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.34it/s]
[2024-05-04 13:12:48.661803] Completed epoch 61 with training loss 0.42256719, validation loss 0.50405920
No improvement in validation loss. 10 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:53<00:00,  1.73it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.33it/s]
[2024-05-04 13:13:48.797165] Completed epoch 62 with training loss 0.42082289, validation loss 0.46347153
No improvement in validation loss. 11 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:53<00:00,  1.71it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.37it/s]
[2024-05-04 13:14:49.425018] Completed epoch 63 with training loss 0.42085767, validation loss 0.50241709
No improvement in validation loss. 12 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:49<00:00,  1.84it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.44it/s]
[2024-05-04 13:15:46.012992] Completed epoch 64 with training loss 0.41951436, validation loss 0.47949347
No improvement in validation loss. 13 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:48<00:00,  1.88it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
[2024-05-04 13:16:41.413128] Completed epoch 65 with training loss 0.42051715, validation loss 0.49153370
No improvement in validation loss. 14 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:50<00:00,  1.81it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
[2024-05-04 13:17:38.590397] Completed epoch 66 with training loss 0.41956750, validation loss 0.45843768
No improvement in validation loss. 15 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:48<00:00,  1.88it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
[2024-05-04 13:18:34.098055] Completed epoch 67 with training loss 0.42217502, validation loss 0.58120108
No improvement in validation loss. 16 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:49<00:00,  1.87it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
[2024-05-04 13:19:29.746018] Completed epoch 68 with training loss 0.41954941, validation loss 0.46774361
No improvement in validation loss. 17 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:49<00:00,  1.85it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.43it/s]
[2024-05-04 13:20:26.082552] Completed epoch 69 with training loss 0.42100248, validation loss 0.46193290
No improvement in validation loss. 18 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:49<00:00,  1.86it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.36it/s]
[2024-05-04 13:21:22.309031] Completed epoch 70 with training loss 0.42057306, validation loss 0.46463344
No improvement in validation loss. 19 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:49<00:00,  1.85it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
[2024-05-04 13:22:18.625623] Completed epoch 71 with training loss 0.42101830, validation loss 0.45086536
No improvement in validation loss. 20 epochs without improvement.
Early stopping due to no improvement in validation loss.

Plot Validation and Loss Values from Training
  Epoch with best Validation Loss:   51, 0.4491
Generate AUROC/AUPRC for Each Intermediate Model

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0000.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:05<00:00,  2.71it/s]
Loss: 0.5912744179368019
AUROC: 0.8407946435158412
AUPRC: 0.6864339507541644
Sensitivity: 0.7884940778341794
Specificity: 0.7489451476793249
Threshold: 0.14
Accuracy:  0.7605563835072032

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.33it/s]
Loss: 0.5530603347306556
AUROC: 0.8260274660880397
AUPRC: 0.662822104980149
Sensitivity: 0.7432950191570882
Specificity: 0.7644098810612991
Threshold: 0.14
Accuracy:  0.7588413607275177

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0001.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.36it/s]
Loss: 0.60423768684268
AUROC: 0.841868534344278
AUPRC: 0.6974605568981569
Sensitivity: 0.7445008460236887
Specificity: 0.7862165963431786
Threshold: 0.13
Accuracy:  0.7739692001987084

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.39it/s]
Loss: 0.5622464462797693
AUROC: 0.8305345522826671
AUPRC: 0.6777004798939034
Sensitivity: 0.7662835249042146
Specificity: 0.7477127172918573
Threshold: 0.12
Accuracy:  0.7526103065005052

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0002.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.41it/s]
Loss: 0.5927421115338802
AUROC: 0.8419458782820601
AUPRC: 0.7014426225875002
Sensitivity: 0.7715736040609137
Specificity: 0.7686357243319268
Threshold: 0.13
Accuracy:  0.76949826130154

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.40it/s]
Loss: 0.5519674274515598
AUROC: 0.8316600823304929
AUPRC: 0.680846025782759
Sensitivity: 0.7394636015325671
Specificity: 0.7753888380603843
Threshold: 0.13
Accuracy:  0.7659144493095318

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0003.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.37it/s]
Loss: 0.585326524451375
AUROC: 0.8422445448725729
AUPRC: 0.7030140911530959
Sensitivity: 0.7495769881556683
Specificity: 0.7834036568213784
Threshold: 0.14
Accuracy:  0.7734724292101341

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.37it/s]
Loss: 0.5450386053070109
AUROC: 0.8326030387266465
AUPRC: 0.6834002682236748
Sensitivity: 0.7598978288633461
Specificity: 0.752516010978957
Threshold: 0.13
Accuracy:  0.754462782081509

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0004.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.35it/s]
Loss: 0.6041678842157125
AUROC: 0.8415044228833344
AUPRC: 0.7046263780348455
Sensitivity: 0.7563451776649747
Specificity: 0.7770745428973277
Threshold: 0.12
Accuracy:  0.7709885742672627

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.39it/s]
Loss: 0.5599226000461173
AUROC: 0.8323508679989577
AUPRC: 0.6839453188386986
Sensitivity: 0.7694763729246488
Specificity: 0.7408508691674291
Threshold: 0.11
Accuracy:  0.7484001347254968

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0005.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.41it/s]
Loss: 0.5877083595842123
AUROC: 0.8415948557952027
AUPRC: 0.7051181056364578
Sensitivity: 0.7529610829103215
Specificity: 0.7770745428973277
Threshold: 0.13
Accuracy:  0.7699950322901142

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.38it/s]
Loss: 0.5481519445459894
AUROC: 0.8326779669532927
AUPRC: 0.6842270019076543
Sensitivity: 0.768837803320562
Specificity: 0.742451967063129
Threshold: 0.12
Accuracy:  0.7494105759514988

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0006.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.36it/s]
Loss: 0.5604842565953732
AUROC: 0.8408963805416932
AUPRC: 0.7032857666244652
Sensitivity: 0.7478849407783418
Specificity: 0.7812939521800282
Threshold: 0.15
Accuracy:  0.771485345255837

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.37it/s]
Loss: 0.5246875248056777
AUROC: 0.8321487954812876
AUPRC: 0.6834729730064619
Sensitivity: 0.7618135376756067
Specificity: 0.755946935041171
Threshold: 0.14
Accuracy:  0.757494105759515

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0007.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.43it/s]
Loss: 0.589632386341691
AUROC: 0.8402609703451445
AUPRC: 0.7034680446657592
Sensitivity: 0.7817258883248731
Specificity: 0.7482419127988749
Threshold: 0.12
Accuracy:  0.7580725285643318

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.38it/s]
Loss: 0.5489651915874887
AUROC: 0.8319149551482264
AUPRC: 0.6841156129795888
Sensitivity: 0.7573435504469987
Specificity: 0.7593778591033852
Threshold: 0.12
Accuracy:  0.7588413607275177

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0008.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.36it/s]
Loss: 0.5733415372669697
AUROC: 0.8403502133502776
AUPRC: 0.7038584043867475
Sensitivity: 0.7614213197969543
Specificity: 0.770745428973277
Threshold: 0.14
Accuracy:  0.7680079483358172

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.39it/s]
Loss: 0.5336293248420066
AUROC: 0.8320630588944625
AUPRC: 0.6840753257146109
Sensitivity: 0.7701149425287356
Specificity: 0.7387923147301007
Threshold: 0.13
Accuracy:  0.7470528797574941

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0009.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.42it/s]
Loss: 0.5598462037742138
AUROC: 0.8401300806042824
AUPRC: 0.702408262563854
Sensitivity: 0.7749576988155669
Specificity: 0.7524613220815752
Threshold: 0.14
Accuracy:  0.7590660705414803

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.40it/s]
Loss: 0.5247491753481804
AUROC: 0.8318163653763238
AUPRC: 0.6835049932630746
Sensitivity: 0.7515964240102171
Specificity: 0.7639524245196706
Threshold: 0.14
Accuracy:  0.7606938363085214

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0010.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.37it/s]
Loss: 0.6007119622081518
AUROC: 0.8395220382626412
AUPRC: 0.7043019728684786
Sensitivity: 0.7783417935702199
Specificity: 0.7510548523206751
Threshold: 0.11
Accuracy:  0.7590660705414803

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.36it/s]
Loss: 0.5591448881524674
AUROC: 0.8312313263669071
AUPRC: 0.6839090764517489
Sensitivity: 0.7586206896551724
Specificity: 0.7589204025617566
Threshold: 0.11
Accuracy:  0.7588413607275177

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0011.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.42it/s]
Loss: 0.5727265644818544
AUROC: 0.8393566412264607
AUPRC: 0.7031561466338389
Sensitivity: 0.7597292724196277
Specificity: 0.7742616033755274
Threshold: 0.13
Accuracy:  0.7699950322901142

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.38it/s]
Loss: 0.5360492195220704
AUROC: 0.8310903795078164
AUPRC: 0.6837704317928828
Sensitivity: 0.7681992337164751
Specificity: 0.7413083257090577
Threshold: 0.12
Accuracy:  0.7484001347254968

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0012.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.36it/s]
Loss: 0.5554869193583727
AUROC: 0.8395458363973431
AUPRC: 0.7025533765059921
Sensitivity: 0.7529610829103215
Specificity: 0.779887482419128
Threshold: 0.15
Accuracy:  0.7719821162444114

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.28it/s]
Loss: 0.5194067073629257
AUROC: 0.831180424832821
AUPRC: 0.6836952659749438
Sensitivity: 0.7630906768837803
Specificity: 0.7477127172918573
Threshold: 0.14
Accuracy:  0.7517682721455036

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0013.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.42it/s]
Loss: 0.5664700362831354
AUROC: 0.8385546440869965
AUPRC: 0.7030356317363913
Sensitivity: 0.7698815566835872
Specificity: 0.7637130801687764
Threshold: 0.13
Accuracy:  0.7655240933929458

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.39it/s]
Loss: 0.530508760759171
AUROC: 0.8303306540284803
AUPRC: 0.6833200193614697
Sensitivity: 0.7490421455938697
Specificity: 0.7634949679780421
Threshold: 0.13
Accuracy:  0.7596833950825194

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0014.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.34it/s]
Loss: 0.5637660995125771
AUROC: 0.8384665909885983
AUPRC: 0.7033700853010797
Sensitivity: 0.7495769881556683
Specificity: 0.7784810126582279
Threshold: 0.14
Accuracy:  0.7699950322901142

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.37it/s]
Loss: 0.5269316260484939
AUROC: 0.8300173576422117
AUPRC: 0.6825951610462037
Sensitivity: 0.7624521072796935
Specificity: 0.7470265324794144
Threshold: 0.13
Accuracy:  0.7510946446615022

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0015.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.24it/s]
Loss: 0.5881044827401638
AUROC: 0.8383095232995638
AUPRC: 0.7029816559476229
Sensitivity: 0.7749576988155669
Specificity: 0.7531645569620253
Threshold: 0.11
Accuracy:  0.7595628415300546

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.41it/s]
Loss: 0.5499263624561593
AUROC: 0.8294185160647287
AUPRC: 0.6810786384806314
Sensitivity: 0.7509578544061303
Specificity: 0.757548032936871
Threshold: 0.11
Accuracy:  0.7558100370495117

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0016.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.37it/s]
Loss: 0.5478763319551945
AUROC: 0.8381917225327878
AUPRC: 0.7031966906838342
Sensitivity: 0.751269035532995
Specificity: 0.7721518987341772
Threshold: 0.16
Accuracy:  0.7660208643815202

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.37it/s]
Loss: 0.5112621343516289
AUROC: 0.8293393521293637
AUPRC: 0.6811444391249734
Sensitivity: 0.7573435504469987
Specificity: 0.7522872827081427
Threshold: 0.15
Accuracy:  0.7536207477265072

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0017.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.42it/s]
Loss: 0.5364542901515961
AUROC: 0.8376729231962798
AUPRC: 0.7038210985822801
Sensitivity: 0.7648054145516074
Specificity: 0.750351617440225
Threshold: 0.16
Accuracy:  0.754595131644312

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.41it/s]
Loss: 0.5062502204103673
AUROC: 0.8288687502848148
AUPRC: 0.6804923057817385
Sensitivity: 0.7490421455938697
Specificity: 0.7596065873741995
Threshold: 0.16
Accuracy:  0.7568204782755137

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0018.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.37it/s]
Loss: 0.6324462555348873
AUROC: 0.8371933907820304
AUPRC: 0.7029943725490979
Sensitivity: 0.7732656514382402
Specificity: 0.7475386779184248
Threshold: 0.09
Accuracy:  0.7550919026328863

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.39it/s]
Loss: 0.5895679983052802
AUROC: 0.8277684884303806
AUPRC: 0.6770434824324035
Sensitivity: 0.7490421455938697
Specificity: 0.7607502287282708
Threshold: 0.09
Accuracy:  0.7576625126305153

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0019.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.37it/s]
Loss: 0.6145036201924086
AUROC: 0.8400610660136458
AUPRC: 0.7046220330863938
Sensitivity: 0.7783417935702199
Specificity: 0.7426160337552743
Threshold: 0.1
Accuracy:  0.7531048186785891

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.40it/s]
Loss: 0.5742777196016717
AUROC: 0.8300786293597127
AUPRC: 0.6790946797916999
Sensitivity: 0.7547892720306514
Specificity: 0.7593778591033852
Threshold: 0.1
Accuracy:  0.7581677332435164

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0020.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.36it/s]
Loss: 0.5522886663675308
AUROC: 0.8367816830516823
AUPRC: 0.7035483169456664
Sensitivity: 0.7597292724196277
Specificity: 0.7573839662447257
Threshold: 0.15
Accuracy:  0.7580725285643318

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.38it/s]
Loss: 0.5177088611303492
AUROC: 0.8279719485078036
AUPRC: 0.6783858850142225
Sensitivity: 0.7611749680715197
Specificity: 0.7458828911253431
Threshold: 0.14
Accuracy:  0.7499157965644998

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0021.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.33it/s]
Loss: 0.5213436894118786
AUROC: 0.8371136670307782
AUPRC: 0.7026506613705146
Sensitivity: 0.7614213197969543
Specificity: 0.760196905766526
Threshold: 0.19
Accuracy:  0.7605563835072032

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.40it/s]
Loss: 0.4941179054848691
AUROC: 0.8281794982350239
AUPRC: 0.6784902691090507
Sensitivity: 0.7503192848020435
Specificity: 0.7548032936870998
Threshold: 0.18
Accuracy:  0.7536207477265072

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0022.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.34it/s]
Loss: 0.5594849474728107
AUROC: 0.839047265475332
AUPRC: 0.7036010098233723
Sensitivity: 0.7580372250423012
Specificity: 0.7665260196905767
Threshold: 0.14
Accuracy:  0.764033780427223

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.37it/s]
Loss: 0.5272078155837161
AUROC: 0.8295823941744692
AUPRC: 0.678893891438894
Sensitivity: 0.7547892720306514
Specificity: 0.7522872827081427
Threshold: 0.13
Accuracy:  0.7529471202425059

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0023.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.36it/s]
Loss: 0.5690558571368456
AUROC: 0.8373326098700384
AUPRC: 0.7030244851254199
Sensitivity: 0.7648054145516074
Specificity: 0.7552742616033755
Threshold: 0.14
Accuracy:  0.7580725285643318

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.38it/s]
Loss: 0.5339959520608821
AUROC: 0.8280343156672147
AUPRC: 0.6768269002102346
Sensitivity: 0.7592592592592593
Specificity: 0.7454254345837146
Threshold: 0.13
Accuracy:  0.7490737622094982

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0024.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.36it/s]
Loss: 0.5184153225272894
AUROC: 0.8365567906787466
AUPRC: 0.7017980958304406
Sensitivity: 0.7698815566835872
Specificity: 0.749648382559775
Threshold: 0.19
Accuracy:  0.7555886736214605

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.37it/s]
Loss: 0.48975470884049194
AUROC: 0.8281548142773179
AUPRC: 0.6792760934006794
Sensitivity: 0.7420178799489144
Specificity: 0.7605215004574566
Threshold: 0.19
Accuracy:  0.7556416301785113

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0025.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.38it/s]
Loss: 0.541471816599369
AUROC: 0.8383404608746767
AUPRC: 0.7043585304331649
Sensitivity: 0.7631133671742809
Specificity: 0.760196905766526
Threshold: 0.16
Accuracy:  0.7610531544957775

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.41it/s]
Loss: 0.5111658902878456
AUROC: 0.8294910343191726
AUPRC: 0.6797308073208957
Sensitivity: 0.7547892720306514
Specificity: 0.7509149130832571
Threshold: 0.15
Accuracy:  0.7519366790165039

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0026.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.34it/s]
Loss: 0.49693112820386887
AUROC: 0.8394399346979183
AUPRC: 0.7039706014119388
Sensitivity: 0.7732656514382402
Specificity: 0.7559774964838256
Threshold: 0.22
Accuracy:  0.7610531544957775

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.39it/s]
Loss: 0.47283494123753084
AUROC: 0.8310277932600234
AUPRC: 0.6838120500881272
Sensitivity: 0.7484035759897829
Specificity: 0.7607502287282708
Threshold: 0.22
Accuracy:  0.757494105759515

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0027.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.37it/s]
Loss: 0.5596409011632204
AUROC: 0.8364389899119706
AUPRC: 0.7031721059766958
Sensitivity: 0.7563451776649747
Specificity: 0.7735583684950773
Threshold: 0.14
Accuracy:  0.7685047193243915

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.40it/s]
Loss: 0.526760958610697
AUROC: 0.8278201932885341
AUPRC: 0.675876312574845
Sensitivity: 0.7522349936143039
Specificity: 0.7566331198536139
Threshold: 0.13
Accuracy:  0.755473223307511

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0028.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.35it/s]
Loss: 0.5587269682437181
AUROC: 0.8367876325853582
AUPRC: 0.7032388673432609
Sensitivity: 0.766497461928934
Specificity: 0.7468354430379747
Threshold: 0.13
Accuracy:  0.7526080476900149

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.36it/s]
Loss: 0.5286610909598939
AUROC: 0.828129253966084
AUPRC: 0.6765693944091853
Sensitivity: 0.743933588761175
Specificity: 0.7648673376029277
Threshold: 0.13
Accuracy:  0.7593465813405187

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0029.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.34it/s]
Loss: 0.4781523831188679
AUROC: 0.8399623037546317
AUPRC: 0.7040857698692675
Sensitivity: 0.7614213197969543
Specificity: 0.7728551336146273
Threshold: 0.24
Accuracy:  0.76949826130154

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.39it/s]
Loss: 0.45734319407889185
AUROC: 0.8311155746717472
AUPRC: 0.6834057949357983
Sensitivity: 0.7618135376756067
Specificity: 0.7481701738334858
Threshold: 0.23
Accuracy:  0.7517682721455036

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0030.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.37it/s]
Loss: 0.551841264590621
AUROC: 0.8417162262821841
AUPRC: 0.7056938908101962
Sensitivity: 0.7732656514382402
Specificity: 0.7573839662447257
Threshold: 0.14
Accuracy:  0.762046696472926

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.36it/s]
Loss: 0.5211600356913627
AUROC: 0.8323846076097865
AUPRC: 0.6790919279025973
Sensitivity: 0.7452107279693486
Specificity: 0.7680695333943275
Threshold: 0.14
Accuracy:  0.7620410912765241

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0031.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.34it/s]
Loss: 0.5456740111112595
AUROC: 0.843553442281194
AUPRC: 0.7061555378994158
Sensitivity: 0.754653130287648
Specificity: 0.7728551336146273
Threshold: 0.15
Accuracy:  0.767511177347243

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.38it/s]
Loss: 0.5144030816377477
AUROC: 0.834079256244603
AUPRC: 0.6816737092836647
Sensitivity: 0.756066411238825
Specificity: 0.7573193046660567
Threshold: 0.14
Accuracy:  0.756988885146514

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0032.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.41it/s]
Loss: 0.5303996484726667
AUROC: 0.8397076637133182
AUPRC: 0.7063944404106268
Sensitivity: 0.7681895093062606
Specificity: 0.760196905766526
Threshold: 0.16
Accuracy:  0.7625434674615003

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.36it/s]
Loss: 0.5013696662289031
AUROC: 0.8313866600297494
AUPRC: 0.6811519341760541
Sensitivity: 0.7630906768837803
Specificity: 0.7477127172918573
Threshold: 0.15
Accuracy:  0.7517682721455036

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0033.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.36it/s]
Loss: 0.5199194848537445
AUROC: 0.8409689648525348
AUPRC: 0.7069311472699322
Sensitivity: 0.7749576988155669
Specificity: 0.7580872011251758
Threshold: 0.15
Accuracy:  0.7630402384500745

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.37it/s]
Loss: 0.4924644044739135
AUROC: 0.8324728271982743
AUPRC: 0.6815693481062148
Sensitivity: 0.7496807151979565
Specificity: 0.7646386093321135
Threshold: 0.15
Accuracy:  0.7606938363085214

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0034.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.41it/s]
Loss: 0.5270923152565956
AUROC: 0.8432928527062049
AUPRC: 0.7090452135158791
Sensitivity: 0.754653130287648
Specificity: 0.7749648382559775
Threshold: 0.16
Accuracy:  0.7690014903129657

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.38it/s]
Loss: 0.4962142743962876
AUROC: 0.833818102893252
AUPRC: 0.6833328359732352
Sensitivity: 0.7515964240102171
Specificity: 0.760064043915828
Threshold: 0.15
Accuracy:  0.7578309195015157

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0035.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.37it/s]
Loss: 0.5326928719878197
AUROC: 0.8371731623675337
AUPRC: 0.7031577313264731
Sensitivity: 0.7681895093062606
Specificity: 0.7531645569620253
Threshold: 0.16
Accuracy:  0.7575757575757576

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.37it/s]
Loss: 0.5060446379666633
AUROC: 0.8286309663608776
AUPRC: 0.6755441551056881
Sensitivity: 0.7573435504469987
Specificity: 0.7488563586459286
Threshold: 0.15
Accuracy:  0.7510946446615022

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0036.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.41it/s]
Loss: 0.5222684647887945
AUROC: 0.8344637447316879
AUPRC: 0.7011517894600555
Sensitivity: 0.7631133671742809
Specificity: 0.7426160337552743
Threshold: 0.16
Accuracy:  0.7486338797814208

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.37it/s]
Loss: 0.4957643924875462
AUROC: 0.8265339984272375
AUPRC: 0.6746504827818213
Sensitivity: 0.743933588761175
Specificity: 0.7612076852698993
Threshold: 0.16
Accuracy:  0.7566520714045133

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0037.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.33it/s]
Loss: 0.5618325918912888
AUROC: 0.8401431695783684
AUPRC: 0.7059219631670723
Sensitivity: 0.7648054145516074
Specificity: 0.7609001406469761
Threshold: 0.12
Accuracy:  0.762046696472926

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.38it/s]
Loss: 0.5312474820208042
AUROC: 0.8314437690679921
AUPRC: 0.6793829819904977
Sensitivity: 0.7662835249042146
Specificity: 0.7470265324794144
Threshold: 0.11
Accuracy:  0.7521050858875042

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0038.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.38it/s]
Loss: 0.5126961190253496
AUROC: 0.8391436479208758
AUPRC: 0.7064041744663744
Sensitivity: 0.7631133671742809
Specificity: 0.7616033755274262
Threshold: 0.16
Accuracy:  0.762046696472926

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.39it/s]
Loss: 0.4851624005018397
AUROC: 0.8313333485234611
AUPRC: 0.679875222110287
Sensitivity: 0.7579821200510856
Specificity: 0.7527447392497713
Threshold: 0.15
Accuracy:  0.7541259683395083

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0039.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.35it/s]
Loss: 0.4890090897679329
AUROC: 0.8408214164173812
AUPRC: 0.7065315112364161
Sensitivity: 0.7732656514382402
Specificity: 0.7510548523206751
Threshold: 0.19
Accuracy:  0.7575757575757576

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.36it/s]
Loss: 0.4649593005789087
AUROC: 0.8318879342477791
AUPRC: 0.6816497293325215
Sensitivity: 0.7452107279693486
Specificity: 0.7630375114364135
Threshold: 0.19
Accuracy:  0.7583361401145167

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0040.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.44it/s]
Loss: 0.492495596408844
AUROC: 0.8454453939900191
AUPRC: 0.7100391321589197
Sensitivity: 0.7614213197969543
Specificity: 0.7672292545710268
Threshold: 0.21
Accuracy:  0.7655240933929458

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.40it/s]
Loss: 0.467325286028233
AUROC: 0.8352082917065408
AUPRC: 0.682814901798785
Sensitivity: 0.7650063856960408
Specificity: 0.7463403476669717
Threshold: 0.2
Accuracy:  0.7512630515325025

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0041.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.29it/s]
Loss: 0.4988856725394726
AUROC: 0.8451681457207384
AUPRC: 0.7096715474691624
Sensitivity: 0.766497461928934
Specificity: 0.7644163150492265
Threshold: 0.17
Accuracy:  0.7650273224043715

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.38it/s]
Loss: 0.4739483569530731
AUROC: 0.8353349247913402
AUPRC: 0.6834172145219123
Sensitivity: 0.7605363984674329
Specificity: 0.7570905763952425
Threshold: 0.16
Accuracy:  0.757999326372516

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0042.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.36it/s]
Loss: 0.5347139835357666
AUROC: 0.8389615921904041
AUPRC: 0.7070092334874769
Sensitivity: 0.7597292724196277
Specificity: 0.7658227848101266
Threshold: 0.16
Accuracy:  0.764033780427223

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.39it/s]
Loss: 0.5058919315008407
AUROC: 0.8310428373289211
AUPRC: 0.6795750465390602
Sensitivity: 0.756066411238825
Specificity: 0.7561756633119854
Threshold: 0.15
Accuracy:  0.7561468507915123

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0043.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.41it/s]
Loss: 0.4923237282782793
AUROC: 0.846255720476629
AUPRC: 0.7093949497773209
Sensitivity: 0.7648054145516074
Specificity: 0.770042194092827
Threshold: 0.19
Accuracy:  0.7685047193243915

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.38it/s]
Loss: 0.46928357792661546
AUROC: 0.8362175588529818
AUPRC: 0.6845429812846376
Sensitivity: 0.7547892720306514
Specificity: 0.7573193046660567
Threshold: 0.18
Accuracy:  0.7566520714045133

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0044.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.33it/s]
Loss: 0.47973549365997314
AUROC: 0.8382643068436296
AUPRC: 0.7042416096274132
Sensitivity: 0.7648054145516074
Specificity: 0.7573839662447257
Threshold: 0.18
Accuracy:  0.7595628415300546

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.41it/s]
Loss: 0.45624975828414266
AUROC: 0.8303134190757627
AUPRC: 0.6783635591418848
Sensitivity: 0.7567049808429118
Specificity: 0.7532021957913998
Threshold: 0.17
Accuracy:  0.7541259683395083

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0045.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.36it/s]
Loss: 0.5114019699394703
AUROC: 0.8398052360655972
AUPRC: 0.7072052580391681
Sensitivity: 0.754653130287648
Specificity: 0.770042194092827
Threshold: 0.17
Accuracy:  0.7655240933929458

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.38it/s]
Loss: 0.48430607134991505
AUROC: 0.8309121145943243
AUPRC: 0.6788568140473958
Sensitivity: 0.7650063856960408
Specificity: 0.7486276303751144
Threshold: 0.15
Accuracy:  0.7529471202425059

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0046.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.37it/s]
Loss: 0.4872635193169117
AUROC: 0.845769048621969
AUPRC: 0.709987628121906
Sensitivity: 0.7698815566835872
Specificity: 0.7580872011251758
Threshold: 0.18
Accuracy:  0.7615499254843517

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.40it/s]
Loss: 0.4661322312152132
AUROC: 0.8353433962087778
AUPRC: 0.6841769300127039
Sensitivity: 0.7611749680715197
Specificity: 0.7504574565416285
Threshold: 0.17
Accuracy:  0.7532839339845065

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0047.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.35it/s]
Loss: 0.4705399461090565
AUROC: 0.8471410110875508
AUPRC: 0.7070261502925712
Sensitivity: 0.766497461928934
Specificity: 0.7672292545710268
Threshold: 0.22
Accuracy:  0.7670144063586687

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.37it/s]
Loss: 0.44874958059889203
AUROC: 0.837165919429225
AUPRC: 0.6861931338525432
Sensitivity: 0.7452107279693486
Specificity: 0.7708142726440989
Threshold: 0.22
Accuracy:  0.7640619737285281

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0048.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.37it/s]
Loss: 0.4982685539871454
AUROC: 0.8403323647492508
AUPRC: 0.7086319167775837
Sensitivity: 0.7681895093062606
Specificity: 0.7580872011251758
Threshold: 0.18
Accuracy:  0.7610531544957775

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.40it/s]
Loss: 0.47029106287246053
AUROC: 0.8324566876874665
AUPRC: 0.6819668930920314
Sensitivity: 0.7624521072796935
Specificity: 0.7495425434583715
Threshold: 0.17
Accuracy:  0.7529471202425059

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0049.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.35it/s]
Loss: 0.46711885184049606
AUROC: 0.8433678168305168
AUPRC: 0.7095333462066795
Sensitivity: 0.7681895093062606
Specificity: 0.759493670886076
Threshold: 0.23
Accuracy:  0.762046696472926

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.38it/s]
Loss: 0.44653717983276286
AUROC: 0.8342438646489503
AUPRC: 0.6829289813948842
Sensitivity: 0.7618135376756067
Specificity: 0.7497712717291857
Threshold: 0.22
Accuracy:  0.7529471202425059

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0050.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.35it/s]
Loss: 0.4714930597692728
AUROC: 0.8420077534322861
AUPRC: 0.7077926868057148
Sensitivity: 0.7580372250423012
Specificity: 0.7714486638537271
Threshold: 0.2
Accuracy:  0.767511177347243

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.42it/s]
Loss: 0.4484458067949782
AUROC: 0.8332624947564847
AUPRC: 0.6822070670904193
Sensitivity: 0.7503192848020435
Specificity: 0.7621225983531564
Threshold: 0.19
Accuracy:  0.759009767598518

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0051.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.41it/s]
Loss: 0.4495239835232496
AUROC: 0.8450729531819298
AUPRC: 0.7099629633509371
Sensitivity: 0.7715736040609137
Specificity: 0.7489451476793249
Threshold: 0.24
Accuracy:  0.7555886736214605

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.48it/s]
Loss: 0.43101485263794026
AUROC: 0.8348665138306114
AUPRC: 0.6827477064005615
Sensitivity: 0.7586206896551724
Specificity: 0.7586916742909423
Threshold: 0.24
Accuracy:  0.7586729538565173

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0052.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.46it/s]
Loss: 0.4551627095788717
AUROC: 0.8406905266765192
AUPRC: 0.7083165991452609
Sensitivity: 0.7698815566835872
Specificity: 0.750351617440225
Threshold: 0.25
Accuracy:  0.7560854446100348

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.44it/s]
Loss: 0.4356064197230846
AUROC: 0.8319884227856591
AUPRC: 0.6818118414744105
Sensitivity: 0.7509578544061303
Specificity: 0.7605215004574566
Threshold: 0.25
Accuracy:  0.757999326372516

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0053.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.45it/s]
Loss: 0.4651184342801571
AUROC: 0.8433309297217284
AUPRC: 0.7088348709316157
Sensitivity: 0.7580372250423012
Specificity: 0.7714486638537271
Threshold: 0.24
Accuracy:  0.767511177347243

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.45it/s]
Loss: 0.4463069052138227
AUROC: 0.833724187006832
AUPRC: 0.6826371744778372
Sensitivity: 0.7567049808429118
Specificity: 0.7548032936870998
Threshold: 0.23
Accuracy:  0.7553048164365106

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0054.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.44it/s]
Loss: 0.5529889147728682
AUROC: 0.8408368852049377
AUPRC: 0.7093108710163338
Sensitivity: 0.7698815566835872
Specificity: 0.7566807313642757
Threshold: 0.1
Accuracy:  0.7605563835072032

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.44it/s]
Loss: 0.5170019747728997
AUROC: 0.8320610870990245
AUPRC: 0.6796683718804843
Sensitivity: 0.7515964240102171
Specificity: 0.7648673376029277
Threshold: 0.1
Accuracy:  0.7613674637925227

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0055.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.45it/s]
Loss: 0.5105477999895811
AUROC: 0.8425765288516686
AUPRC: 0.7115170838083482
Sensitivity: 0.7698815566835872
Specificity: 0.7580872011251758
Threshold: 0.14
Accuracy:  0.7615499254843517

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.44it/s]
Loss: 0.48097503787659585
AUROC: 0.83413899434343
AUPRC: 0.6826096482516016
Sensitivity: 0.7522349936143039
Specificity: 0.7646386093321135
Threshold: 0.14
Accuracy:  0.7613674637925227

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0056.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.46it/s]
Loss: 0.4673374127596617
AUROC: 0.8480762777813473
AUPRC: 0.7128018521499502
Sensitivity: 0.7580372250423012
Specificity: 0.770042194092827
Threshold: 0.21
Accuracy:  0.7665176353700944

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.44it/s]
Loss: 0.4470599781959615
AUROC: 0.8362992788194701
AUPRC: 0.6850038969995293
Sensitivity: 0.7573435504469987
Specificity: 0.7541171088746569
Threshold: 0.2
Accuracy:  0.7549680026945099

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0057.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.46it/s]
Loss: 0.48137885332107544
AUROC: 0.8450991311301022
AUPRC: 0.711812712216649
Sensitivity: 0.7681895093062606
Specificity: 0.7644163150492265
Threshold: 0.18
Accuracy:  0.7655240933929458

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.43it/s]
Loss: 0.4587570628587236
AUROC: 0.8348095508512897
AUPRC: 0.6841502412099488
Sensitivity: 0.7573435504469987
Specificity: 0.75
Threshold: 0.17
Accuracy:  0.7519366790165039

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0058.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.46it/s]
Loss: 0.506523173302412
AUROC: 0.8412676314430476
AUPRC: 0.7088763156534719
Sensitivity: 0.7614213197969543
Specificity: 0.7573839662447257
Threshold: 0.16
Accuracy:  0.7585692995529061

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.45it/s]
Loss: 0.4794790849406668
AUROC: 0.8324952472426997
AUPRC: 0.6804619391057728
Sensitivity: 0.7567049808429118
Specificity: 0.7529734675205856
Threshold: 0.15
Accuracy:  0.7539575614685079

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0059.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.37it/s]
Loss: 0.47043016366660595
AUROC: 0.8413152277124519
AUPRC: 0.7090821961804686
Sensitivity: 0.7597292724196277
Specificity: 0.760196905766526
Threshold: 0.21
Accuracy:  0.7600596125186289

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.46it/s]
Loss: 0.4485174893064702
AUROC: 0.8324068815952906
AUPRC: 0.6809091837934919
Sensitivity: 0.7611749680715197
Specificity: 0.7470265324794144
Threshold: 0.2
Accuracy:  0.7507578309195015

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0060.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.39it/s]
Loss: 0.5072033759206533
AUROC: 0.8422028981368441
AUPRC: 0.7111832051413828
Sensitivity: 0.766497461928934
Specificity: 0.7665260196905767
Threshold: 0.16
Accuracy:  0.7665176353700944

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.52it/s]
Loss: 0.4790217473785928
AUROC: 0.8341030638487811
AUPRC: 0.682390223225346
Sensitivity: 0.756066411238825
Specificity: 0.7591491308325709
Threshold: 0.15
Accuracy:  0.7583361401145167

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0061.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.44it/s]
Loss: 0.5052478443831205
AUROC: 0.8424432592973363
AUPRC: 0.7089729779318987
Sensitivity: 0.7563451776649747
Specificity: 0.7686357243319268
Threshold: 0.14
Accuracy:  0.7650273224043715

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.51it/s]
Loss: 0.4776896396850018
AUROC: 0.8332788533556744
AUPRC: 0.6795448253940074
Sensitivity: 0.7522349936143039
Specificity: 0.7616651418115279
Threshold: 0.13
Accuracy:  0.7591781744695184

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0062.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.43it/s]
Loss: 0.46651521511375904
AUROC: 0.8482452445377331
AUPRC: 0.7106020584894325
Sensitivity: 0.7529610829103215
Specificity: 0.7791842475386779
Threshold: 0.24
Accuracy:  0.771485345255837

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.52it/s]
Loss: 0.44526942201117253
AUROC: 0.8376032198397092
AUPRC: 0.6871155067427651
Sensitivity: 0.7758620689655172
Specificity: 0.7419945105215004
Threshold: 0.23
Accuracy:  0.7509262377905018

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0063.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.42it/s]
Loss: 0.5053221080452204
AUROC: 0.8493209202262727
AUPRC: 0.7170607567471226
Sensitivity: 0.7681895093062606
Specificity: 0.7580872011251758
Threshold: 0.13
Accuracy:  0.7610531544957775

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.47it/s]
Loss: 0.477779117987511
AUROC: 0.8372767781505202
AUPRC: 0.6836248631628863
Sensitivity: 0.7509578544061303
Specificity: 0.7676120768526989
Threshold: 0.13
Accuracy:  0.7632199393735264

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0064.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.45it/s]
Loss: 0.47903681732714176
AUROC: 0.849530343811652
AUPRC: 0.7164959841119327
Sensitivity: 0.7800338409475466
Specificity: 0.7376933895921237
Threshold: 0.23
Accuracy:  0.7501241927471436

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.47it/s]
Loss: 0.45506600084456994
AUROC: 0.8385562543014352
AUPRC: 0.6848501227908672
Sensitivity: 0.7656449553001277
Specificity: 0.75
Threshold: 0.23
Accuracy:  0.7541259683395083

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0065.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.42it/s]
Loss: 0.49391631968319416
AUROC: 0.8460570060518656
AUPRC: 0.7134890186146255
Sensitivity: 0.7648054145516074
Specificity: 0.7609001406469761
Threshold: 0.15
Accuracy:  0.762046696472926

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.47it/s]
Loss: 0.4659949239898235
AUROC: 0.8356591755967092
AUPRC: 0.6837622718882717
Sensitivity: 0.7573435504469987
Specificity: 0.755946935041171
Threshold: 0.14
Accuracy:  0.7563152576625126

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0066.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.45it/s]
Loss: 0.458617627620697
AUROC: 0.8453240235030379
AUPRC: 0.7131219214856059
Sensitivity: 0.7648054145516074
Specificity: 0.7587904360056259
Threshold: 0.2
Accuracy:  0.7605563835072032

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.41it/s]
Loss: 0.4376127624765356
AUROC: 0.8345169948318512
AUPRC: 0.6823069114580299
Sensitivity: 0.7541507024265645
Specificity: 0.7511436413540714
Threshold: 0.19
Accuracy:  0.7519366790165039

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0067.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.43it/s]
Loss: 0.5768723096698523
AUROC: 0.8477752313773645
AUPRC: 0.7156113976951306
Sensitivity: 0.7597292724196277
Specificity: 0.7784810126582279
Threshold: 0.09
Accuracy:  0.7729756582215599

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.45it/s]
Loss: 0.541205920437549
AUROC: 0.8374890017632233
AUPRC: 0.6835200157490666
Sensitivity: 0.7662835249042146
Specificity: 0.7529734675205856
Threshold: 0.08
Accuracy:  0.756483664533513

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0068.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.39it/s]
Loss: 0.46834913082420826
AUROC: 0.8425313123957344
AUPRC: 0.7104188038633681
Sensitivity: 0.7631133671742809
Specificity: 0.7559774964838256
Threshold: 0.19
Accuracy:  0.7580725285643318

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.43it/s]
Loss: 0.44581918545225835
AUROC: 0.8331436758239769
AUPRC: 0.6787157200089016
Sensitivity: 0.756066411238825
Specificity: 0.7548032936870998
Threshold: 0.18
Accuracy:  0.7551364095655103

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0069.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.43it/s]
Loss: 0.46353837475180626
AUROC: 0.8488973134285736
AUPRC: 0.7164140935228697
Sensitivity: 0.754653130287648
Specificity: 0.7714486638537271
Threshold: 0.22
Accuracy:  0.7665176353700944

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.43it/s]
Loss: 0.44294720412568844
AUROC: 0.8370023334373273
AUPRC: 0.6866667775215519
Sensitivity: 0.7630906768837803
Specificity: 0.7456541628545288
Threshold: 0.21
Accuracy:  0.7502526103065005

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0070.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.45it/s]
Loss: 0.46390635147690773
AUROC: 0.8473397255123144
AUPRC: 0.7161776763436768
Sensitivity: 0.7681895093062606
Specificity: 0.7517580872011251
Threshold: 0.22
Accuracy:  0.756582215598609

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.43it/s]
Loss: 0.44473991305270094
AUROC: 0.8357031393320318
AUPRC: 0.685062162236409
Sensitivity: 0.7484035759897829
Specificity: 0.7632662397072278
Threshold: 0.22
Accuracy:  0.7593465813405187

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0071.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
Loss: 0.4513931181281805
AUROC: 0.8456690964562198
AUPRC: 0.715980800638417
Sensitivity: 0.7580372250423012
Specificity: 0.7665260196905767
Threshold: 0.23
Accuracy:  0.764033780427223

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.46it/s]
Loss: 0.4326777657929887
AUROC: 0.8347360832138572
AUPRC: 0.6841839128789451
Sensitivity: 0.7515964240102171
Specificity: 0.760064043915828
Threshold: 0.22
Accuracy:  0.7578309195015157


Plot AUROC/AUPRC for Each Intermediate Model
  Epoch with best Validation Loss:      51, 0.4491
  Epoch with best model Test AUROC:     64, 0.8386
  Epoch with best model Test Accuracy:   2, 0.7659

AUROC/AUPRC Plots - Best Model Based on Validation Loss
  Epoch with best Validation Loss:   51, 0.4491
  Best Model Based on Validation Loss:
    ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0051.model

Generate Stats Based on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.43it/s]
Loss: 0.43101485263794026
AUROC: 0.8348665138306114
AUPRC: 0.6827477064005615
Sensitivity: 0.7586206896551724
Specificity: 0.7586916742909423
Threshold: 0.24
Accuracy:  0.7586729538565173
best_model_val_test_auroc: 0.8348665138306114
best_model_val_test_auprc: 0.6827477064005615

AUROC/AUPRC Plots - Best Model Based on Model AUROC
  Epoch with best model Test AUROC:  64, 0.8386
  Best Model Based on Model AUROC:
    ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_f386500f_0064.model

Generate Stats Based on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.43it/s]
Loss: 0.45506600084456994
AUROC: 0.8385562543014352
AUPRC: 0.6848501227908672
Sensitivity: 0.7656449553001277
Specificity: 0.75
Threshold: 0.23
Accuracy:  0.7541259683395083
best_model_auroc_test_auroc: 0.8385562543014352
best_model_auroc_test_auprc: 0.6848501227908672

Total Processing Time: 6205.4150 sec
In [101]:
RUN_ME = True

if MULTI_RUN and RUN_ME:
    run_experiment(
        experimentNamePrefix=None, 
        useAbp=False, 
        useEeg=False, 
        useEcg=True,
        nResiduals=12, 
        skip_connection=False,
        batch_size=128,
        learning_rate=1e-4,
        weight_decay=1e-1,
        balance_labels=False,
        #pos_weight=2.0,
        pos_weight=None,
        max_epochs=200,
        patience=20,
        device=device
    )
Experiment Setup
  name:              ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_9888ba74
  prediction_window: 003
  max_cases:         _ALL
  use_abp:           False
  use_eeg:           False
  use_ecg:           True
  n_residuals:       12
  skip_connection:   False
  batch_size:        128
  learning_rate:     0.0001
  weight_decay:      0.1
  balance_labels:    False
  max_epochs:        200
  patience:          20
  device:            mps

Model Architecture
HypotensionCNN(
  (ecgResiduals): Sequential(
    (0): ResidualBlock(
      (bn1): BatchNorm1d(1, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (1): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (2): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (3): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (4): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (5): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (6): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (7): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (8): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=1, dilation=1, ceil_mode=False)
    )
    (9): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (10): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (11): ResidualBlock(
      (bn1): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
  )
  (ecgFc): Linear(in_features=2814, out_features=32, bias=True)
  (fullLinear1): Linear(in_features=32, out_features=16, bias=True)
  (fullLinear2): Linear(in_features=16, out_features=1, bias=True)
  (sigmoid): Sigmoid()
)

Training Loop
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.95it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.44it/s]
[2024-05-04 13:56:35.587292] Completed epoch 0 with training loss 0.62213022, validation loss 0.62945169
Validation loss improved to 0.62945169. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.97it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
[2024-05-04 13:57:28.890060] Completed epoch 1 with training loss 0.59418994, validation loss 0.60941625
Validation loss improved to 0.60941625. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:48<00:00,  1.88it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.46it/s]
[2024-05-04 13:58:24.365765] Completed epoch 2 with training loss 0.59126574, validation loss 0.61109996
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.95it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.44it/s]
[2024-05-04 13:59:18.033125] Completed epoch 3 with training loss 0.59018672, validation loss 0.61742032
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.95it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
[2024-05-04 14:00:11.664505] Completed epoch 4 with training loss 0.58891201, validation loss 0.61493957
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.95it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
[2024-05-04 14:01:05.282667] Completed epoch 5 with training loss 0.58907562, validation loss 0.61568969
No improvement in validation loss. 4 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.94it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.46it/s]
[2024-05-04 14:01:59.182490] Completed epoch 6 with training loss 0.58843756, validation loss 0.61743253
No improvement in validation loss. 5 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.95it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.46it/s]
[2024-05-04 14:02:52.805455] Completed epoch 7 with training loss 0.58922350, validation loss 0.61713302
No improvement in validation loss. 6 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.95it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.42it/s]
[2024-05-04 14:03:46.592936] Completed epoch 8 with training loss 0.58892787, validation loss 0.61953342
No improvement in validation loss. 7 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.96it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.21it/s]
[2024-05-04 14:04:40.756793] Completed epoch 9 with training loss 0.58928651, validation loss 0.61801839
No improvement in validation loss. 8 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.96it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.46it/s]
[2024-05-04 14:05:34.154843] Completed epoch 10 with training loss 0.58847833, validation loss 0.63282436
No improvement in validation loss. 9 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.97it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
[2024-05-04 14:06:27.435853] Completed epoch 11 with training loss 0.58725184, validation loss 0.64408726
No improvement in validation loss. 10 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.96it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.44it/s]
[2024-05-04 14:07:21.061077] Completed epoch 12 with training loss 0.58553737, validation loss 0.65373099
No improvement in validation loss. 11 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.95it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
[2024-05-04 14:08:14.862680] Completed epoch 13 with training loss 0.58309847, validation loss 0.67289603
No improvement in validation loss. 12 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.96it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
[2024-05-04 14:09:08.329180] Completed epoch 14 with training loss 0.58010054, validation loss 0.68664175
No improvement in validation loss. 13 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.95it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
[2024-05-04 14:10:02.094416] Completed epoch 15 with training loss 0.57729292, validation loss 0.68943167
No improvement in validation loss. 14 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.95it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.46it/s]
[2024-05-04 14:10:55.727264] Completed epoch 16 with training loss 0.57587069, validation loss 0.68824250
No improvement in validation loss. 15 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.94it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.43it/s]
[2024-05-04 14:11:49.684569] Completed epoch 17 with training loss 0.57402605, validation loss 0.68438351
No improvement in validation loss. 16 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.95it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
[2024-05-04 14:12:43.268737] Completed epoch 18 with training loss 0.57216913, validation loss 0.68545759
No improvement in validation loss. 17 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.95it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
[2024-05-04 14:13:36.969540] Completed epoch 19 with training loss 0.57293558, validation loss 0.68541718
No improvement in validation loss. 18 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.94it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.45it/s]
[2024-05-04 14:14:30.901987] Completed epoch 20 with training loss 0.57043248, validation loss 0.68712270
No improvement in validation loss. 19 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.96it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.42it/s]
[2024-05-04 14:15:24.619121] Completed epoch 21 with training loss 0.57034755, validation loss 0.69016844
No improvement in validation loss. 20 epochs without improvement.
Early stopping due to no improvement in validation loss.

Plot Validation and Loss Values from Training
  Epoch with best Validation Loss:    1, 0.6094
Generate AUROC/AUPRC for Each Intermediate Model

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_9888ba74_0000.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:05<00:00,  2.68it/s]
Loss: 0.6299675479531288
AUROC: 0.5473672123578954
AUPRC: 0.31978431754183834
Sensitivity: 0.45685279187817257
Specificity: 0.6315049226441631
Threshold: 0.4
Accuracy:  0.5802285146547441

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.46it/s]
Loss: 0.6162865237986788
AUROC: 0.5346056672029951
AUPRC: 0.2844474511293803
Sensitivity: 0.42656449553001274
Specificity: 0.6193961573650503
Threshold: 0.4
Accuracy:  0.5685415964971371

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_9888ba74_0001.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.43it/s]
Loss: 0.6094195283949375
AUROC: 0.54574298966447
AUPRC: 0.32119520499781484
Sensitivity: 0.6869712351945855
Specificity: 0.38045007032348804
Threshold: 0.34
Accuracy:  0.4704421261798311

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.48it/s]
Loss: 0.5889337931541686
AUROC: 0.5172308630680086
AUPRC: 0.2777976524447208
Sensitivity: 0.6864623243933589
Specificity: 0.33920402561756635
Threshold: 0.34
Accuracy:  0.43078477601886156

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_9888ba74_0002.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.45it/s]
Loss: 0.6105086021125317
AUROC: 0.5502408371231863
AUPRC: 0.3258032705331406
Sensitivity: 0.9763113367174281
Specificity: 0.020393811533052038
Threshold: 0.34
Accuracy:  0.30104321907600595

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.48it/s]
Loss: 0.5901599944906032
AUROC: 0.5117482493377689
AUPRC: 0.2757523334907059
Sensitivity: 0.9910600255427842
Specificity: 0.010064043915827997
Threshold: 0.34
Accuracy:  0.2687773661165376

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_9888ba74_0003.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.44it/s]
Loss: 0.6174226626753807
AUROC: 0.5691734431855231
AUPRC: 0.34394260149083133
Sensitivity: 0.008460236886632826
Specificity: 0.9929676511954993
Threshold: 0.37
Accuracy:  0.7039244908097367

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.44it/s]
Loss: 0.5998096592882847
AUROC: 0.5152103569796884
AUPRC: 0.27706946529475457
Sensitivity: 0.008301404853128991
Specificity: 0.9929094236047575
Threshold: 0.37
Accuracy:  0.7332435163354665

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_9888ba74_0004.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.43it/s]
Loss: 0.6152492575347424
AUROC: 0.5769679272538618
AUPRC: 0.35681507084113473
Sensitivity: 0.5871404399323181
Specificity: 0.5309423347398031
Threshold: 0.36
Accuracy:  0.5474416294088426

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.40it/s]
Loss: 0.5964624805653349
AUROC: 0.5134558241871237
AUPRC: 0.2723763721305581
Sensitivity: 0.5178799489144317
Specificity: 0.5132662397072278
Threshold: 0.36
Accuracy:  0.514482990906029

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_9888ba74_0005.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.40it/s]
Loss: 0.6156821250915527
AUROC: 0.5834564886804172
AUPRC: 0.3723220959916187
Sensitivity: 0.9746192893401016
Specificity: 0.029535864978902954
Threshold: 0.36
Accuracy:  0.30700447093889716

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.41it/s]
Loss: 0.5973371222932288
AUROC: 0.5161823791011885
AUPRC: 0.27169742250973117
Sensitivity: 0.9821200510855683
Specificity: 0.014867337602927721
Threshold: 0.36
Accuracy:  0.26995621421353994

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_9888ba74_0006.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.43it/s]
Loss: 0.6179109774529934
AUROC: 0.566590155663599
AUPRC: 0.35148882010870347
Sensitivity: 0.07445008460236886
Specificity: 0.969760900140647
Threshold: 0.37
Accuracy:  0.7069051167411823

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.47it/s]
Loss: 0.6005881276536496
AUROC: 0.536876153135184
AUPRC: 0.2862688694181902
Sensitivity: 0.05300127713920817
Specificity: 0.9533394327538883
Threshold: 0.37
Accuracy:  0.7158976086224318

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_9888ba74_0007.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.41it/s]
Loss: 0.6167351417243481
AUROC: 0.5182418652026054
AUPRC: 0.322275585727683
Sensitivity: 0.9932318104906938
Specificity: 0.010548523206751054
Threshold: 0.36
Accuracy:  0.29905613512170887

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.44it/s]
Loss: 0.5991266312751364
AUROC: 0.5075210120364235
AUPRC: 0.2804881893212029
Sensitivity: 0.9968071519795658
Specificity: 0.003202195791399817
Threshold: 0.36
Accuracy:  0.2652408218255305

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_9888ba74_0008.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.40it/s]
Loss: 0.6192518137395382
AUROC: 0.5007853384451727
AUPRC: 0.29202683464813645
Sensitivity: 0.9763113367174281
Specificity: 0.03234880450070324
Threshold: 0.37
Accuracy:  0.3094883258817685

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.40it/s]
Loss: 0.6023584826195494
AUROC: 0.48045738935452476
AUPRC: 0.25636267381998107
Sensitivity: 0.9776500638569604
Specificity: 0.014867337602927721
Threshold: 0.37
Accuracy:  0.2687773661165376

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_9888ba74_0009.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.41it/s]
Loss: 0.6185036189854145
AUROC: 0.521463537687916
AUPRC: 0.29203588914354317
Sensitivity: 0.6971235194585449
Specificity: 0.35161744022503516
Threshold: 0.37
Accuracy:  0.45305514157973176

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.39it/s]
Loss: 0.6009703665337665
AUROC: 0.48641695849239147
AUPRC: 0.24576271591599325
Sensitivity: 0.669220945083014
Specificity: 0.34011893870082344
Threshold: 0.37
Accuracy:  0.4269114179858538

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_9888ba74_0010.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.43it/s]
Loss: 0.633376482874155
AUROC: 0.5543686235872833
AUPRC: 0.3149181008731404
Sensitivity: 1.0
Specificity: 0.007032348804500703
Threshold: 0.4
Accuracy:  0.2985593641331346

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.43it/s]
Loss: 0.6213030117623349
AUROC: 0.5003197960082681
AUPRC: 0.25111666935139776
Sensitivity: 0.9987228607918263
Specificity: 0.004117108874656907
Threshold: 0.4
Accuracy:  0.26641966992253285

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_9888ba74_0011.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.42it/s]
Loss: 0.6442958936095238
AUROC: 0.5697975492680883
AUPRC: 0.3286912348509771
Sensitivity: 0.6159052453468697
Specificity: 0.48945147679324896
Threshold: 0.43
Accuracy:  0.5265772478887233

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.40it/s]
Loss: 0.6355197150656517
AUROC: 0.5199393066758274
AUPRC: 0.2660100593027461
Sensitivity: 0.5759897828863346
Specificity: 0.4553979871912168
Threshold: 0.43
Accuracy:  0.4872010778039744

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_9888ba74_0012.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.40it/s]
Loss: 0.6538461111485958
AUROC: 0.5645435160792097
AUPRC: 0.3265256072396735
Sensitivity: 0.9983079526226735
Specificity: 0.006329113924050633
Threshold: 0.44
Accuracy:  0.2975658221559861

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.45it/s]
Loss: 0.6470283624973703
AUROC: 0.5237502760513613
AUPRC: 0.26750587265458986
Sensitivity: 0.9993614303959132
Specificity: 0.004574565416285453
Threshold: 0.44
Accuracy:  0.26692489053553387

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_9888ba74_0013.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.39it/s]
Loss: 0.6729684174060822
AUROC: 0.5654317814569694
AUPRC: 0.33155745473306053
Sensitivity: 0.9966159052453468
Specificity: 0.007032348804500703
Threshold: 0.47000000000000003
Accuracy:  0.2975658221559861

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.38it/s]
Loss: 0.6696906140510072
AUROC: 0.5314171279207403
AUPRC: 0.272709253772348
Sensitivity: 0.9993614303959132
Specificity: 0.0054894784995425435
Threshold: 0.47000000000000003
Accuracy:  0.2675985180195352

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_9888ba74_0014.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.39it/s]
Loss: 0.6866631843149662
AUROC: 0.5792965747344723
AUPRC: 0.3428904549573661
Sensitivity: 0.9915397631133672
Specificity: 0.020393811533052038
Threshold: 0.49
Accuracy:  0.3055141579731744

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.42it/s]
Loss: 0.6856482675734986
AUROC: 0.5601977462524202
AUPRC: 0.2900616117592372
Sensitivity: 0.991698595146871
Specificity: 0.0192131747483989
Threshold: 0.49
Accuracy:  0.27568204782755135

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_9888ba74_0015.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.37it/s]
Loss: 0.6894641928374767
AUROC: 0.5891805350296644
AUPRC: 0.35602620138694707
Sensitivity: 0.9915397631133672
Specificity: 0.02180028129395218
Threshold: 0.49
Accuracy:  0.3065076999503229

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.40it/s]
Loss: 0.688935528410242
AUROC: 0.5697507300024889
AUPRC: 0.3029970070084762
Sensitivity: 0.9968071519795658
Specificity: 0.018755718206770355
Threshold: 0.49
Accuracy:  0.27669248905355337

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_9888ba74_0016.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.36it/s]
Loss: 0.6882286630570889
AUROC: 0.5904477857025566
AUPRC: 0.36166748664000836
Sensitivity: 0.949238578680203
Specificity: 0.06891701828410689
Threshold: 0.49
Accuracy:  0.3273720814704421

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.41it/s]
Loss: 0.6874639987945557
AUROC: 0.5737203923960558
AUPRC: 0.30751182165466334
Sensitivity: 0.9386973180076629
Specificity: 0.08989021043000915
Threshold: 0.49
Accuracy:  0.3137420006736275

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_9888ba74_0017.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.45it/s]
Loss: 0.6844219453632832
AUROC: 0.5955727140106758
AUPRC: 0.3641944997953821
Sensitivity: 0.7292724196277496
Specificity: 0.42616033755274263
Threshold: 0.49
Accuracy:  0.5151515151515151

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.40it/s]
Loss: 0.6830979192510565
AUROC: 0.5912521368420192
AUPRC: 0.3338828941107519
Sensitivity: 0.7056194125159643
Specificity: 0.4149130832570906
Threshold: 0.49
Accuracy:  0.49157965644998314

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_9888ba74_0018.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.38it/s]
Loss: 0.6854448281228542
AUROC: 0.5955774736376163
AUPRC: 0.3642232636637928
Sensitivity: 0.7969543147208121
Specificity: 0.33263009845288327
Threshold: 0.49
Accuracy:  0.4689518132141083

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.40it/s]
Loss: 0.6844355603481861
AUROC: 0.5933416557706712
AUPRC: 0.335799413014206
Sensitivity: 0.7822477650063857
Specificity: 0.3236505032021958
Threshold: 0.49
Accuracy:  0.4445941394408892

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_9888ba74_0019.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.41it/s]
Loss: 0.6854608319699764
AUROC: 0.6025598463592424
AUPRC: 0.3707867854481273
Sensitivity: 0.8274111675126904
Specificity: 0.3234880450070324
Threshold: 0.49
Accuracy:  0.4714356681569796

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.42it/s]
Loss: 0.6845513328592828
AUROC: 0.5970074425783957
AUPRC: 0.33502860174852794
Sensitivity: 0.8001277139208174
Specificity: 0.3167886550777676
Threshold: 0.49
Accuracy:  0.44425732569888854

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_9888ba74_0020.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.40it/s]
Loss: 0.6871071383357048
AUROC: 0.6006155387540724
AUPRC: 0.36756917095760566
Sensitivity: 0.9086294416243654
Specificity: 0.21237693389592124
Threshold: 0.49
Accuracy:  0.4167908594138102

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.39it/s]
Loss: 0.686246505443086
AUROC: 0.6045570821634014
AUPRC: 0.34196349452565333
Sensitivity: 0.8659003831417624
Specificity: 0.22461116193961575
Threshold: 0.49
Accuracy:  0.3937352643987875

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_9888ba74_0021.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.39it/s]
Loss: 0.6902006715536118
AUROC: 0.6079572633097018
AUPRC: 0.3715884927913653
Sensitivity: 0.9949238578680203
Specificity: 0.005625879043600563
Threshold: 0.49
Accuracy:  0.29607550919026326

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.42it/s]
Loss: 0.6898677437863452
AUROC: 0.6019310888166773
AUPRC: 0.34380855709943897
Sensitivity: 0.9968071519795658
Specificity: 0.008234217749313814
Threshold: 0.49
Accuracy:  0.2689457729875379


Plot AUROC/AUPRC for Each Intermediate Model
  Epoch with best Validation Loss:       1, 0.6094
  Epoch with best model Test AUROC:     20, 0.6046
  Epoch with best model Test Accuracy:   3, 0.7332

AUROC/AUPRC Plots - Best Model Based on Validation Loss
  Epoch with best Validation Loss:    1, 0.6094
  Best Model Based on Validation Loss:
    ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_9888ba74_0001.model

Generate Stats Based on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.38it/s]
Loss: 0.5889337931541686
AUROC: 0.5172308630680086
AUPRC: 0.2777976524447208
Sensitivity: 0.6864623243933589
Specificity: 0.33920402561756635
Threshold: 0.34
Accuracy:  0.43078477601886156
best_model_val_test_auroc: 0.5172308630680086
best_model_val_test_auprc: 0.2777976524447208

AUROC/AUPRC Plots - Best Model Based on Model AUROC
  Epoch with best model Test AUROC:  20, 0.6046
  Best Model Based on Model AUROC:
    ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_9888ba74_0020.model

Generate Stats Based on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.39it/s]
Loss: 0.686246505443086
AUROC: 0.6045570821634014
AUPRC: 0.34196349452565333
Sensitivity: 0.8659003831417624
Specificity: 0.22461116193961575
Threshold: 0.49
Accuracy:  0.3937352643987875
best_model_auroc_test_auroc: 0.6045570821634014
best_model_auroc_test_auprc: 0.34196349452565333

Total Processing Time: 1818.7330 sec
In [102]:
RUN_ME = True

if MULTI_RUN and RUN_ME:
    run_experiment(
        experimentNamePrefix=None, 
        useAbp=False, 
        useEeg=True, 
        useEcg=False,
        nResiduals=12, 
        skip_connection=False,
        batch_size=128,
        learning_rate=1e-4,
        weight_decay=1e-1,
        balance_labels=False,
        #pos_weight=2.0,
        pos_weight=None,
        max_epochs=200,
        patience=20,
        device=device
    )
Experiment Setup
  name:              EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf
  prediction_window: 003
  max_cases:         _ALL
  use_abp:           False
  use_eeg:           True
  use_ecg:           False
  n_residuals:       12
  skip_connection:   False
  batch_size:        128
  learning_rate:     0.0001
  weight_decay:      0.1
  balance_labels:    False
  max_epochs:        200
  patience:          20
  device:            mps

Model Architecture
HypotensionCNN(
  (eegResiduals): Sequential(
    (0): ResidualBlock(
      (bn1): BatchNorm1d(1, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(1, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(1, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (1): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (2): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (3): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (4): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (5): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(2, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (6): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (7): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
    )
    (8): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (9): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
    )
    (10): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(4, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (11): ResidualBlock(
      (bn1): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(6, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(6, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
    )
  )
  (eegFc): Linear(in_features=720, out_features=32, bias=True)
  (fullLinear1): Linear(in_features=32, out_features=16, bias=True)
  (fullLinear2): Linear(in_features=16, out_features=1, bias=True)
  (sigmoid): Sigmoid()
)

Training Loop
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.96it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.40it/s]
[2024-05-04 14:26:54.002397] Completed epoch 0 with training loss 0.68160874, validation loss 0.64734328
Validation loss improved to 0.64734328. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:41<00:00,  2.21it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
[2024-05-04 14:27:42.240239] Completed epoch 1 with training loss 0.61815131, validation loss 0.62600720
Validation loss improved to 0.62600720. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:40<00:00,  2.26it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.61it/s]
[2024-05-04 14:28:29.185258] Completed epoch 2 with training loss 0.60912925, validation loss 0.61755085
Validation loss improved to 0.61755085. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.33it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.59it/s]
[2024-05-04 14:29:14.994322] Completed epoch 3 with training loss 0.60325176, validation loss 0.61809516
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.32it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.60it/s]
[2024-05-04 14:30:00.837421] Completed epoch 4 with training loss 0.60004634, validation loss 0.61428624
Validation loss improved to 0.61428624. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.32it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.61it/s]
[2024-05-04 14:30:46.647240] Completed epoch 5 with training loss 0.59807247, validation loss 0.61153758
Validation loss improved to 0.61153758. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.34it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.52it/s]
[2024-05-04 14:31:32.422497] Completed epoch 6 with training loss 0.59522974, validation loss 0.61018765
Validation loss improved to 0.61018765. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.32it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.58it/s]
[2024-05-04 14:32:18.401830] Completed epoch 7 with training loss 0.59244275, validation loss 0.60777843
Validation loss improved to 0.60777843. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.35it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.61it/s]
[2024-05-04 14:33:03.707797] Completed epoch 8 with training loss 0.59268963, validation loss 0.60732383
Validation loss improved to 0.60732383. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.34it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.58it/s]
[2024-05-04 14:33:49.340931] Completed epoch 9 with training loss 0.59031051, validation loss 0.60743463
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.34it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.60it/s]
[2024-05-04 14:34:34.872228] Completed epoch 10 with training loss 0.58926958, validation loss 0.60760969
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.36it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.55it/s]
[2024-05-04 14:35:20.249939] Completed epoch 11 with training loss 0.58822626, validation loss 0.60709250
Validation loss improved to 0.60709250. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.31it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.58it/s]
[2024-05-04 14:36:06.386780] Completed epoch 12 with training loss 0.58746904, validation loss 0.60602820
Validation loss improved to 0.60602820. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.33it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.61it/s]
[2024-05-04 14:36:51.999768] Completed epoch 13 with training loss 0.58609754, validation loss 0.60277671
Validation loss improved to 0.60277671. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:40<00:00,  2.28it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.57it/s]
[2024-05-04 14:37:38.586718] Completed epoch 14 with training loss 0.58546668, validation loss 0.60434711
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.34it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.63it/s]
[2024-05-04 14:38:23.942158] Completed epoch 15 with training loss 0.58383101, validation loss 0.60520720
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.33it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.61it/s]
[2024-05-04 14:39:09.649063] Completed epoch 16 with training loss 0.58434641, validation loss 0.60321671
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.30it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.61it/s]
[2024-05-04 14:39:55.810818] Completed epoch 17 with training loss 0.58416510, validation loss 0.60086256
Validation loss improved to 0.60086256. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.33it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.61it/s]
[2024-05-04 14:40:41.410656] Completed epoch 18 with training loss 0.58301580, validation loss 0.60148746
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.35it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.57it/s]
[2024-05-04 14:41:26.772887] Completed epoch 19 with training loss 0.58161277, validation loss 0.60244203
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.33it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.60it/s]
[2024-05-04 14:42:12.495786] Completed epoch 20 with training loss 0.58245623, validation loss 0.60330212
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:40<00:00,  2.28it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.61it/s]
[2024-05-04 14:42:59.017392] Completed epoch 21 with training loss 0.58125597, validation loss 0.60175341
No improvement in validation loss. 4 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.34it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.56it/s]
[2024-05-04 14:43:44.732790] Completed epoch 22 with training loss 0.58157039, validation loss 0.60327476
No improvement in validation loss. 5 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.34it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.58it/s]
[2024-05-04 14:44:30.237299] Completed epoch 23 with training loss 0.58084589, validation loss 0.59857047
Validation loss improved to 0.59857047. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.33it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.62it/s]
[2024-05-04 14:45:15.814602] Completed epoch 24 with training loss 0.58058745, validation loss 0.59717655
Validation loss improved to 0.59717655. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:40<00:00,  2.29it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.60it/s]
[2024-05-04 14:46:02.146888] Completed epoch 25 with training loss 0.58028656, validation loss 0.59830701
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.34it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.59it/s]
[2024-05-04 14:46:47.772416] Completed epoch 26 with training loss 0.58117217, validation loss 0.59568107
Validation loss improved to 0.59568107. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.33it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
[2024-05-04 14:47:33.609631] Completed epoch 27 with training loss 0.58013964, validation loss 0.59679580
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.33it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.58it/s]
[2024-05-04 14:48:19.303418] Completed epoch 28 with training loss 0.58042383, validation loss 0.59403670
Validation loss improved to 0.59403670. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.34it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.58it/s]
[2024-05-04 14:49:04.797818] Completed epoch 29 with training loss 0.57963634, validation loss 0.59307432
Validation loss improved to 0.59307432. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.35it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.60it/s]
[2024-05-04 14:49:50.296262] Completed epoch 30 with training loss 0.57950515, validation loss 0.59277719
Validation loss improved to 0.59277719. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.35it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.60it/s]
[2024-05-04 14:50:35.712777] Completed epoch 31 with training loss 0.57912558, validation loss 0.59317315
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.33it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.56it/s]
[2024-05-04 14:51:21.478846] Completed epoch 32 with training loss 0.57838774, validation loss 0.59163117
Validation loss improved to 0.59163117. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.32it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.59it/s]
[2024-05-04 14:52:07.395152] Completed epoch 33 with training loss 0.57961571, validation loss 0.59166163
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.35it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.56it/s]
[2024-05-04 14:52:52.854748] Completed epoch 34 with training loss 0.57824838, validation loss 0.59265792
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.33it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.56it/s]
[2024-05-04 14:53:38.687252] Completed epoch 35 with training loss 0.57870501, validation loss 0.59790874
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.32it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.62it/s]
[2024-05-04 14:54:24.438782] Completed epoch 36 with training loss 0.57802761, validation loss 0.59119964
Validation loss improved to 0.59119964. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.32it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.58it/s]
[2024-05-04 14:55:10.349402] Completed epoch 37 with training loss 0.57786661, validation loss 0.59043884
Validation loss improved to 0.59043884. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.31it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.58it/s]
[2024-05-04 14:55:56.527760] Completed epoch 38 with training loss 0.57765424, validation loss 0.59252149
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.34it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.58it/s]
[2024-05-04 14:56:42.123818] Completed epoch 39 with training loss 0.57732642, validation loss 0.58903068
Validation loss improved to 0.58903068. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.35it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.57it/s]
[2024-05-04 14:57:27.624277] Completed epoch 40 with training loss 0.57810724, validation loss 0.59039271
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:40<00:00,  2.29it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.51it/s]
[2024-05-04 14:58:14.254931] Completed epoch 41 with training loss 0.57772005, validation loss 0.59306872
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.34it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.60it/s]
[2024-05-04 14:58:59.776589] Completed epoch 42 with training loss 0.57712317, validation loss 0.59280145
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.35it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.60it/s]
[2024-05-04 14:59:45.153033] Completed epoch 43 with training loss 0.57739592, validation loss 0.60093617
No improvement in validation loss. 4 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.33it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.57it/s]
[2024-05-04 15:00:30.843702] Completed epoch 44 with training loss 0.57626456, validation loss 0.60713804
No improvement in validation loss. 5 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:38<00:00,  2.37it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.58it/s]
[2024-05-04 15:01:15.962392] Completed epoch 45 with training loss 0.57643509, validation loss 0.60294276
No improvement in validation loss. 6 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:40<00:00,  2.29it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.60it/s]
[2024-05-04 15:02:02.295872] Completed epoch 46 with training loss 0.57653201, validation loss 0.60225153
No improvement in validation loss. 7 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.35it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.60it/s]
[2024-05-04 15:02:47.727754] Completed epoch 47 with training loss 0.57662791, validation loss 0.60231924
No improvement in validation loss. 8 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.34it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.55it/s]
[2024-05-04 15:03:33.335156] Completed epoch 48 with training loss 0.57656741, validation loss 0.59791851
No improvement in validation loss. 9 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.35it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.59it/s]
[2024-05-04 15:04:18.669079] Completed epoch 49 with training loss 0.57620877, validation loss 0.59416884
No improvement in validation loss. 10 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.34it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.62it/s]
[2024-05-04 15:05:04.056672] Completed epoch 50 with training loss 0.57597166, validation loss 0.59861404
No improvement in validation loss. 11 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:40<00:00,  2.29it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
[2024-05-04 15:05:50.658233] Completed epoch 51 with training loss 0.57512140, validation loss 0.59533823
No improvement in validation loss. 12 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.31it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.58it/s]
[2024-05-04 15:06:36.771500] Completed epoch 52 with training loss 0.57592469, validation loss 0.58854365
Validation loss improved to 0.58854365. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:40<00:00,  2.25it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.51it/s]
[2024-05-04 15:07:24.036496] Completed epoch 53 with training loss 0.57480490, validation loss 0.59234947
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.33it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.62it/s]
[2024-05-04 15:08:09.656429] Completed epoch 54 with training loss 0.57515669, validation loss 0.60192239
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:38<00:00,  2.38it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.64it/s]
[2024-05-04 15:08:54.418506] Completed epoch 55 with training loss 0.57395685, validation loss 0.59440434
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:38<00:00,  2.36it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.61it/s]
[2024-05-04 15:09:39.578797] Completed epoch 56 with training loss 0.57396299, validation loss 0.59239089
No improvement in validation loss. 4 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.36it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.60it/s]
[2024-05-04 15:10:24.810646] Completed epoch 57 with training loss 0.57493830, validation loss 0.58631992
Validation loss improved to 0.58631992. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.33it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
[2024-05-04 15:11:10.688559] Completed epoch 58 with training loss 0.57429868, validation loss 0.59593374
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.30it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.60it/s]
[2024-05-04 15:11:56.845520] Completed epoch 59 with training loss 0.57453936, validation loss 0.58826327
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:38<00:00,  2.37it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.63it/s]
[2024-05-04 15:12:41.779089] Completed epoch 60 with training loss 0.57425886, validation loss 0.59443402
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:38<00:00,  2.40it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.64it/s]
[2024-05-04 15:13:26.243928] Completed epoch 61 with training loss 0.57399267, validation loss 0.60246503
No improvement in validation loss. 4 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:38<00:00,  2.39it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.63it/s]
[2024-05-04 15:14:10.911181] Completed epoch 62 with training loss 0.57411790, validation loss 0.60042667
No improvement in validation loss. 5 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:38<00:00,  2.40it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.65it/s]
[2024-05-04 15:14:55.271304] Completed epoch 63 with training loss 0.57482141, validation loss 0.59056568
No improvement in validation loss. 6 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:38<00:00,  2.40it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.62it/s]
[2024-05-04 15:15:39.807164] Completed epoch 64 with training loss 0.57422751, validation loss 0.60410428
No improvement in validation loss. 7 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.34it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.64it/s]
[2024-05-04 15:16:25.273630] Completed epoch 65 with training loss 0.57456195, validation loss 0.59388536
No improvement in validation loss. 8 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:38<00:00,  2.41it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.65it/s]
[2024-05-04 15:17:09.498663] Completed epoch 66 with training loss 0.57506001, validation loss 0.59439099
No improvement in validation loss. 9 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:38<00:00,  2.39it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.60it/s]
[2024-05-04 15:17:54.186315] Completed epoch 67 with training loss 0.57394993, validation loss 0.60653245
No improvement in validation loss. 10 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:38<00:00,  2.42it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.65it/s]
[2024-05-04 15:18:38.301709] Completed epoch 68 with training loss 0.57424414, validation loss 0.59272623
No improvement in validation loss. 11 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:38<00:00,  2.42it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.58it/s]
[2024-05-04 15:19:22.594340] Completed epoch 69 with training loss 0.57484442, validation loss 0.62965572
No improvement in validation loss. 12 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:38<00:00,  2.40it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.65it/s]
[2024-05-04 15:20:07.052774] Completed epoch 70 with training loss 0.57307261, validation loss 0.61174905
No improvement in validation loss. 13 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:38<00:00,  2.41it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.66it/s]
[2024-05-04 15:20:51.240926] Completed epoch 71 with training loss 0.57420862, validation loss 0.59212315
No improvement in validation loss. 14 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:38<00:00,  2.40it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.63it/s]
[2024-05-04 15:21:35.615857] Completed epoch 72 with training loss 0.57430792, validation loss 0.59548700
No improvement in validation loss. 15 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:38<00:00,  2.38it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.61it/s]
[2024-05-04 15:22:20.429550] Completed epoch 73 with training loss 0.57417178, validation loss 0.59247696
No improvement in validation loss. 16 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:39<00:00,  2.35it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.61it/s]
[2024-05-04 15:23:05.678866] Completed epoch 74 with training loss 0.57387275, validation loss 0.59815109
No improvement in validation loss. 17 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:38<00:00,  2.37it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.61it/s]
[2024-05-04 15:23:50.623980] Completed epoch 75 with training loss 0.57452363, validation loss 0.59059107
No improvement in validation loss. 18 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:38<00:00,  2.41it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.65it/s]
[2024-05-04 15:24:34.846131] Completed epoch 76 with training loss 0.57383287, validation loss 0.60007596
No improvement in validation loss. 19 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:38<00:00,  2.40it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.63it/s]
[2024-05-04 15:25:19.227687] Completed epoch 77 with training loss 0.57319319, validation loss 0.59613776
No improvement in validation loss. 20 epochs without improvement.
Early stopping due to no improvement in validation loss.

Plot Validation and Loss Values from Training
  Epoch with best Validation Loss:   57, 0.5863
Generate AUROC/AUPRC for Each Intermediate Model

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0000.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:05<00:00,  2.89it/s]
Loss: 0.6475874818861485
AUROC: 0.5095841037979443
AUPRC: 0.31332396605099
Sensitivity: 0.5076142131979695
Specificity: 0.4908579465541491
Threshold: 0.44
Accuracy:  0.49577744659711875

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.53it/s]
Loss: 0.6467958194144229
AUROC: 0.5050552453264066
AUPRC: 0.27703546212219643
Sensitivity: 0.5517241379310345
Specificity: 0.46111619396157366
Threshold: 0.44
Accuracy:  0.48501178848097004

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0001.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.57it/s]
Loss: 0.6255254745483398
AUROC: 0.51137372352755
AUPRC: 0.31409732176662786
Sensitivity: 0.5008460236886633
Specificity: 0.5021097046413502
Threshold: 0.39
Accuracy:  0.50173869846001

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:17<00:00,  2.61it/s]
Loss: 0.6175647492104388
AUROC: 0.5066794935611385
AUPRC: 0.2779265518833688
Sensitivity: 0.5421455938697318
Specificity: 0.4730100640439158
Threshold: 0.39
Accuracy:  0.49124284270798246

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0002.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.63it/s]
Loss: 0.6176423244178295
AUROC: 0.5135173405108506
AUPRC: 0.3151295618201843
Sensitivity: 0.47377326565143824
Specificity: 0.5365682137834037
Threshold: 0.37
Accuracy:  0.5181321410829608

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.60it/s]
Loss: 0.6056071494488006
AUROC: 0.508268322507446
AUPRC: 0.27875690613210485
Sensitivity: 0.5102171136653896
Specificity: 0.5070905763952425
Threshold: 0.37
Accuracy:  0.5079151229370158

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0003.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.61it/s]
Loss: 0.6170216985046864
AUROC: 0.5169906782706372
AUPRC: 0.3173136431723609
Sensitivity: 0.494077834179357
Specificity: 0.5133614627285513
Threshold: 0.37
Accuracy:  0.5076999503229012

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:17<00:00,  2.62it/s]
Loss: 0.6050981619256608
AUROC: 0.5101034067951283
AUPRC: 0.27979013924479307
Sensitivity: 0.5376756066411239
Specificity: 0.48604757548032934
Threshold: 0.37
Accuracy:  0.4996631862579993

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0004.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.62it/s]
Loss: 0.6154794245958328
AUROC: 0.5206900983100945
AUPRC: 0.3200121816956657
Sensitivity: 0.5126903553299492
Specificity: 0.4964838255977497
Threshold: 0.36
Accuracy:  0.5012419274714357

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.59it/s]
Loss: 0.600963720615874
AUROC: 0.5120123238675468
AUPRC: 0.2809754300867321
Sensitivity: 0.566411238825032
Specificity: 0.4618023787740165
Threshold: 0.36
Accuracy:  0.48939036712697875

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0005.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.58it/s]
Loss: 0.6108289584517479
AUROC: 0.5247441105566145
AUPRC: 0.323100727904027
Sensitivity: 0.4856175972927242
Specificity: 0.530239099859353
Threshold: 0.35000000000000003
Accuracy:  0.5171385991058122

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:17<00:00,  2.67it/s]
Loss: 0.5953613424554784
AUROC: 0.5146313063860466
AUPRC: 0.2822692485321031
Sensitivity: 0.5351213282247765
Specificity: 0.49954254345837146
Threshold: 0.35000000000000003
Accuracy:  0.5089255641630178

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0006.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.61it/s]
Loss: 0.6101983115077019
AUROC: 0.5302676576209957
AUPRC: 0.3263289909629595
Sensitivity: 0.49746192893401014
Specificity: 0.5344585091420534
Threshold: 0.35000000000000003
Accuracy:  0.5235966219572777

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:17<00:00,  2.69it/s]
Loss: 0.5945383582977538
AUROC: 0.5174633888707776
AUPRC: 0.2837049046461389
Sensitivity: 0.5338441890166028
Specificity: 0.5041171088746569
Threshold: 0.35000000000000003
Accuracy:  0.5119568878410239

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0007.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.61it/s]
Loss: 0.6075329892337322
AUROC: 0.5350011066132636
AUPRC: 0.32885728272699416
Sensitivity: 0.5093062605752962
Specificity: 0.530239099859353
Threshold: 0.34
Accuracy:  0.524093392945852

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:17<00:00,  2.68it/s]
Loss: 0.5907583401558247
AUROC: 0.5200272341464726
AUPRC: 0.2847633438017975
Sensitivity: 0.5376756066411239
Specificity: 0.49954254345837146
Threshold: 0.34
Accuracy:  0.5095991916470192

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0008.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.62it/s]
Loss: 0.60793786495924
AUROC: 0.5396084254916099
AUPRC: 0.3308790901830874
Sensitivity: 0.5245346869712352
Specificity: 0.5239099859353024
Threshold: 0.34
Accuracy:  0.524093392945852

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:17<00:00,  2.68it/s]
Loss: 0.5902214931680801
AUROC: 0.5225423687719015
AUPRC: 0.2857810782581568
Sensitivity: 0.5498084291187739
Specificity: 0.4830741079597438
Threshold: 0.34
Accuracy:  0.5006736274840013

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0009.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.61it/s]
Loss: 0.6074881218373775
AUROC: 0.5444168386081899
AUPRC: 0.3314012364488243
Sensitivity: 0.5651438240270727
Specificity: 0.5042194092827004
Threshold: 0.34
Accuracy:  0.5221063089915549

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.53it/s]
Loss: 0.5901396046293542
AUROC: 0.5259806688096431
AUPRC: 0.28717709922278056
Sensitivity: 0.5683269476372924
Specificity: 0.46271729185727356
Threshold: 0.34
Accuracy:  0.4905692152239811

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0010.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.60it/s]
Loss: 0.60763755813241
AUROC: 0.5503318649884222
AUPRC: 0.33204529389114334
Sensitivity: 0.5109983079526227
Specificity: 0.5541490857946554
Threshold: 0.35000000000000003
Accuracy:  0.5414803775459514

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:17<00:00,  2.62it/s]
Loss: 0.5920376631807773
AUROC: 0.5304392634423867
AUPRC: 0.28909223980163656
Sensitivity: 0.5229885057471264
Specificity: 0.5249313815187557
Threshold: 0.35000000000000003
Accuracy:  0.5244189962950488

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0011.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.61it/s]
Loss: 0.6061787083745003
AUROC: 0.5567763998657785
AUPRC: 0.33324106652329516
Sensitivity: 0.4653130287648054
Specificity: 0.6132208157524613
Threshold: 0.35000000000000003
Accuracy:  0.5697963238946846

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:17<00:00,  2.66it/s]
Loss: 0.5905512184538739
AUROC: 0.5354088452114291
AUPRC: 0.2905623321039759
Sensitivity: 0.466794380587484
Specificity: 0.603156450137237
Threshold: 0.35000000000000003
Accuracy:  0.5671943415291344

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0012.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.62it/s]
Loss: 0.6052890308201313
AUROC: 0.5637111763180002
AUPRC: 0.33532492789499785
Sensitivity: 0.6023688663282571
Specificity: 0.48171589310829815
Threshold: 0.34
Accuracy:  0.5171385991058122

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.58it/s]
Loss: 0.5894695932560778
AUROC: 0.540492864145339
AUPRC: 0.29391820746009945
Sensitivity: 0.6174968071519795
Specificity: 0.44533394327538883
Threshold: 0.34
Accuracy:  0.49073762209498145

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0013.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.61it/s]
Loss: 0.6037787906825542
AUROC: 0.5706507123971624
AUPRC: 0.3377338068056017
Sensitivity: 0.5042301184433164
Specificity: 0.5843881856540084
Threshold: 0.34
Accuracy:  0.5608544461003477

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.61it/s]
Loss: 0.5871917656127442
AUROC: 0.5439912674292111
AUPRC: 0.2951822891918424
Sensitivity: 0.5300127713920817
Specificity: 0.5544373284537969
Threshold: 0.34
Accuracy:  0.547995958235096

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0014.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.61it/s]
Loss: 0.6044140346348286
AUROC: 0.5760088624253631
AUPRC: 0.3401714646779078
Sensitivity: 0.6362098138747885
Specificity: 0.4929676511954993
Threshold: 0.34
Accuracy:  0.5350223546944859

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.43it/s]
Loss: 0.5895437775774205
AUROC: 0.5464378273910722
AUPRC: 0.29653030259485735
Sensitivity: 0.5025542784163474
Specificity: 0.5823421774931381
Threshold: 0.35000000000000003
Accuracy:  0.5613001010441226

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0015.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.57it/s]
Loss: 0.6050508990883827
AUROC: 0.5811230815728663
AUPRC: 0.3432335046368119
Sensitivity: 0.6023688663282571
Specificity: 0.5218002812939522
Threshold: 0.35000000000000003
Accuracy:  0.5454545454545454

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.60it/s]
Loss: 0.5924763704868073
AUROC: 0.5481576711898193
AUPRC: 0.2974783707157572
Sensitivity: 0.4859514687100894
Specificity: 0.5951509606587374
Threshold: 0.36
Accuracy:  0.5663523071741327

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0016.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.63it/s]
Loss: 0.6048242226243019
AUROC: 0.5847284989802499
AUPRC: 0.34579045869422764
Sensitivity: 0.5752961082910322
Specificity: 0.5407876230661041
Threshold: 0.35000000000000003
Accuracy:  0.5509190263288624

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:17<00:00,  2.61it/s]
Loss: 0.5916197204843481
AUROC: 0.548729930043619
AUPRC: 0.2982948229775233
Sensitivity: 0.4821200510855683
Specificity: 0.5967520585544374
Threshold: 0.36
Accuracy:  0.566520714045133

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0017.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.62it/s]
Loss: 0.6021664775907993
AUROC: 0.5861200949069612
AUPRC: 0.3475893943272269
Sensitivity: 0.5989847715736041
Specificity: 0.5274261603375527
Threshold: 0.34
Accuracy:  0.5484351713859911

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:17<00:00,  2.62it/s]
Loss: 0.588389257167248
AUROC: 0.5499047549773959
AUPRC: 0.2986351985241208
Sensitivity: 0.5223499361430396
Specificity: 0.5638151875571821
Threshold: 0.35000000000000003
Accuracy:  0.5528797574941058

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0018.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.63it/s]
Loss: 0.6009358130395412
AUROC: 0.5872159990099977
AUPRC: 0.3494709591031716
Sensitivity: 0.6057529610829103
Specificity: 0.5147679324894515
Threshold: 0.34
Accuracy:  0.5414803775459514

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:17<00:00,  2.63it/s]
Loss: 0.5887744870591671
AUROC: 0.5495683082520953
AUPRC: 0.29854586754874923
Sensitivity: 0.5459770114942529
Specificity: 0.5443732845379688
Threshold: 0.35000000000000003
Accuracy:  0.5447962276860896

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0019.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.57it/s]
Loss: 0.6021304354071617
AUROC: 0.5887004076620475
AUPRC: 0.35160113677554616
Sensitivity: 0.5736040609137056
Specificity: 0.5520393811533052
Threshold: 0.35000000000000003
Accuracy:  0.5583705911574764

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:17<00:00,  2.68it/s]
Loss: 0.5909993280755713
AUROC: 0.5503757219692482
AUPRC: 0.29890437556258354
Sensitivity: 0.5114942528735632
Specificity: 0.5734217749313815
Threshold: 0.36
Accuracy:  0.5570899292691142

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0020.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.56it/s]
Loss: 0.6035027354955673
AUROC: 0.5900081151639335
AUPRC: 0.35317130547909736
Sensitivity: 0.5499153976311336
Specificity: 0.5857946554149086
Threshold: 0.36
Accuracy:  0.5752608047690015

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:17<00:00,  2.69it/s]
Loss: 0.593036283203896
AUROC: 0.5514835788875919
AUPRC: 0.29936513655382463
Sensitivity: 0.5696040868454662
Specificity: 0.5171546203110704
Threshold: 0.36
Accuracy:  0.5309868642640619

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0021.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.61it/s]
Loss: 0.6007243059575558
AUROC: 0.5912575172357991
AUPRC: 0.3541590194568133
Sensitivity: 0.5871404399323181
Specificity: 0.5428973277074542
Threshold: 0.35000000000000003
Accuracy:  0.555886736214605

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:17<00:00,  2.70it/s]
Loss: 0.5912313778349694
AUROC: 0.5519902572857112
AUPRC: 0.29961550079039867
Sensitivity: 0.5293742017879949
Specificity: 0.5548947849954254
Threshold: 0.36
Accuracy:  0.5481643651060963

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0022.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.63it/s]
Loss: 0.6036331653594971
AUROC: 0.594500013088974
AUPRC: 0.3561289185385504
Sensitivity: 0.6023688663282571
Specificity: 0.5351617440225035
Threshold: 0.36
Accuracy:  0.5548931942374565

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:17<00:00,  2.69it/s]
Loss: 0.5953282130525467
AUROC: 0.5551938406368636
AUPRC: 0.2997737744243201
Sensitivity: 0.5446998722860792
Specificity: 0.5432296431838975
Threshold: 0.37
Accuracy:  0.5436173795890872

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0023.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.61it/s]
Loss: 0.5997691974043846
AUROC: 0.5962087191605921
AUPRC: 0.3574255487001897
Sensitivity: 0.6074450084602369
Specificity: 0.5351617440225035
Threshold: 0.34
Accuracy:  0.5563835072031793

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:17<00:00,  2.67it/s]
Loss: 0.5879388166234848
AUROC: 0.5554217655836106
AUPRC: 0.30129650677698094
Sensitivity: 0.5389527458492975
Specificity: 0.5379688929551693
Threshold: 0.35000000000000003
Accuracy:  0.5382283597170765

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0024.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.61it/s]
Loss: 0.5975353717803955
AUROC: 0.5974004107558049
AUPRC: 0.35800972237286033
Sensitivity: 0.5617597292724196
Specificity: 0.5759493670886076
Threshold: 0.34
Accuracy:  0.5717834078489816

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:17<00:00,  2.63it/s]
Loss: 0.5854376801785003
AUROC: 0.5568980561310277
AUPRC: 0.3022198000814778
Sensitivity: 0.5593869731800766
Specificity: 0.5198993595608418
Threshold: 0.34
Accuracy:  0.5303132367800606

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0025.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.58it/s]
Loss: 0.5981665886938572
AUROC: 0.602730003022363
AUPRC: 0.3607545334127201
Sensitivity: 0.5820642978003384
Specificity: 0.5478199718706048
Threshold: 0.35000000000000003
Accuracy:  0.5578738201689022

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:17<00:00,  2.67it/s]
Loss: 0.5894266164049189
AUROC: 0.5631431704601091
AUPRC: 0.3042899658528946
Sensitivity: 0.5395913154533845
Specificity: 0.5567246111619396
Threshold: 0.36
Accuracy:  0.5522061300101044

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0026.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.61it/s]
Loss: 0.5959015302360058
AUROC: 0.6044512031146998
AUPRC: 0.3617834587516444
Sensitivity: 0.5905245346869712
Specificity: 0.5443037974683544
Threshold: 0.34
Accuracy:  0.5578738201689022

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.60it/s]
Loss: 0.5861026460820056
AUROC: 0.5647785922023231
AUPRC: 0.3053013758572337
Sensitivity: 0.5446998722860792
Specificity: 0.5560384263494969
Threshold: 0.35000000000000003
Accuracy:  0.5530481643651061

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0027.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.61it/s]
Loss: 0.5952520333230495
AUROC: 0.606311027341677
AUPRC: 0.3623317536844577
Sensitivity: 0.5482233502538071
Specificity: 0.580168776371308
Threshold: 0.34
Accuracy:  0.5707898658718331

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.61it/s]
Loss: 0.5835182400459938
AUROC: 0.5674692166217389
AUPRC: 0.304156306288336
Sensitivity: 0.566411238825032
Specificity: 0.5409423604757548
Threshold: 0.34
Accuracy:  0.5476591444930953

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0028.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.63it/s]
Loss: 0.5930890217423439
AUROC: 0.6075901770819203
AUPRC: 0.36398839848378217
Sensitivity: 0.5482233502538071
Specificity: 0.5921237693389592
Threshold: 0.34
Accuracy:  0.5792349726775956

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.59it/s]
Loss: 0.5827693622163002
AUROC: 0.5697651898357012
AUPRC: 0.30618386967634825
Sensitivity: 0.5555555555555556
Specificity: 0.55032021957914
Threshold: 0.34
Accuracy:  0.5517009093971034

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0029.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.58it/s]
Loss: 0.5941587686538696
AUROC: 0.6078483868434392
AUPRC: 0.3636336336475197
Sensitivity: 0.5516074450084603
Specificity: 0.5886075949367089
Threshold: 0.34
Accuracy:  0.5777446597118728

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.59it/s]
Loss: 0.5830344272420761
AUROC: 0.5702749354711686
AUPRC: 0.3060898755159517
Sensitivity: 0.5651340996168582
Specificity: 0.5423147301006405
Threshold: 0.34
Accuracy:  0.5483327719770966

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0030.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.60it/s]
Loss: 0.5922417193651199
AUROC: 0.6086432445424927
AUPRC: 0.3561540119433301
Sensitivity: 0.5702199661590525
Specificity: 0.5766526019690577
Threshold: 0.33
Accuracy:  0.5747640337804272

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.60it/s]
Loss: 0.580146887200944
AUROC: 0.5716915609492195
AUPRC: 0.3061599927368418
Sensitivity: 0.566411238825032
Specificity: 0.5420860018298261
Threshold: 0.33
Accuracy:  0.548501178848097

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0031.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.59it/s]
Loss: 0.5937173441052437
AUROC: 0.6093226812882406
AUPRC: 0.3585508345303835
Sensitivity: 0.583756345177665
Specificity: 0.559774964838256
Threshold: 0.34
Accuracy:  0.5668156979632389

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:17<00:00,  2.65it/s]
Loss: 0.5834917388063796
AUROC: 0.573341661613028
AUPRC: 0.3084702155372846
Sensitivity: 0.541507024265645
Specificity: 0.5713632204940531
Threshold: 0.35000000000000003
Accuracy:  0.563489390367127

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0032.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.60it/s]
Loss: 0.592214222997427
AUROC: 0.6104870050285458
AUPRC: 0.3628634406278904
Sensitivity: 0.5397631133671743
Specificity: 0.59985935302391
Threshold: 0.34
Accuracy:  0.5822155986090413

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.57it/s]
Loss: 0.581066259044282
AUROC: 0.5748271538724894
AUPRC: 0.31155416929059243
Sensitivity: 0.5555555555555556
Specificity: 0.557868252516011
Threshold: 0.34
Accuracy:  0.5572583361401146

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0033.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.58it/s]
Loss: 0.5905654467642307
AUROC: 0.6132380694001204
AUPRC: 0.36479584181880853
Sensitivity: 0.5854483925549916
Specificity: 0.5618846694796061
Threshold: 0.33
Accuracy:  0.568802781917536

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.55it/s]
Loss: 0.5803819907472488
AUROC: 0.5729840363441335
AUPRC: 0.31099822761548707
Sensitivity: 0.5338441890166028
Specificity: 0.5807410795974383
Threshold: 0.34
Accuracy:  0.5683731896261367

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0034.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.56it/s]
Loss: 0.5933914259076118
AUROC: 0.6113104204892421
AUPRC: 0.3623198026212042
Sensitivity: 0.5532994923857868
Specificity: 0.580168776371308
Threshold: 0.34
Accuracy:  0.5722801788375559

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.58it/s]
Loss: 0.5815483268271101
AUROC: 0.5746748144175345
AUPRC: 0.3124547561944302
Sensitivity: 0.5689655172413793
Specificity: 0.5512351326623971
Threshold: 0.34
Accuracy:  0.5559110811721119

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0035.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.57it/s]
Loss: 0.5982079319655895
AUROC: 0.6127329539910662
AUPRC: 0.3651559352555788
Sensitivity: 0.5516074450084603
Specificity: 0.6068917018284107
Threshold: 0.37
Accuracy:  0.5906607054148038

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.58it/s]
Loss: 0.5906097635309747
AUROC: 0.5741999038348062
AUPRC: 0.31183915846340604
Sensitivity: 0.5485312899106003
Specificity: 0.567932296431839
Threshold: 0.37
Accuracy:  0.5628157628831256

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0036.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.59it/s]
Loss: 0.5911223851144314
AUROC: 0.6116679874631425
AUPRC: 0.36327159713991286
Sensitivity: 0.571912013536379
Specificity: 0.5639943741209564
Threshold: 0.34
Accuracy:  0.5663189269746647

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.58it/s]
Loss: 0.5821304448107456
AUROC: 0.5739360483934103
AUPRC: 0.3108562777821087
Sensitivity: 0.5855683269476373
Specificity: 0.5313357731015553
Threshold: 0.34
Accuracy:  0.5456382620410912

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0037.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.56it/s]
Loss: 0.5921848006546497
AUROC: 0.6139537983012892
AUPRC: 0.36480564112570835
Sensitivity: 0.5532994923857868
Specificity: 0.5956399437412095
Threshold: 0.33
Accuracy:  0.5832091405861898

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.59it/s]
Loss: 0.5780082788873226
AUROC: 0.5742025328953902
AUPRC: 0.31343186794568734
Sensitivity: 0.5555555555555556
Specificity: 0.5617566331198536
Threshold: 0.33
Accuracy:  0.5601212529471202

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0038.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.59it/s]
Loss: 0.5920063890516758
AUROC: 0.6065966049581034
AUPRC: 0.3596530122826502
Sensitivity: 0.5617597292724196
Specificity: 0.5675105485232067
Threshold: 0.34
Accuracy:  0.5658221559860904

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.58it/s]
Loss: 0.5811948693813161
AUROC: 0.5768318855973051
AUPRC: 0.31200436165379913
Sensitivity: 0.5830140485312899
Specificity: 0.5368252516010978
Threshold: 0.34
Accuracy:  0.549006399461098

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0039.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.51it/s]
Loss: 0.5889771953225136
AUROC: 0.6174414149418969
AUPRC: 0.36675270164144086
Sensitivity: 0.5651438240270727
Specificity: 0.6061884669479606
Threshold: 0.3
Accuracy:  0.5941381023348237

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.57it/s]
Loss: 0.5726466312053355
AUROC: 0.5693650614206975
AUPRC: 0.31042573679891505
Sensitivity: 0.5351213282247765
Specificity: 0.5580969807868252
Threshold: 0.3
Accuracy:  0.552037723139104

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0040.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.58it/s]
Loss: 0.5916683562099934
AUROC: 0.6228531107731775
AUPRC: 0.366521331492534
Sensitivity: 0.560067681895093
Specificity: 0.6082981715893109
Threshold: 0.3
Accuracy:  0.5941381023348237

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.58it/s]
Loss: 0.572999044301662
AUROC: 0.5664597303869159
AUPRC: 0.30918467682357564
Sensitivity: 0.520434227330779
Specificity: 0.5725068618481244
Threshold: 0.3
Accuracy:  0.5587739979791175

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0041.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.55it/s]
Loss: 0.5938634052872658
AUROC: 0.619441648163617
AUPRC: 0.36298509800135187
Sensitivity: 0.571912013536379
Specificity: 0.6047819971870605
Threshold: 0.34
Accuracy:  0.5951316443119722

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.57it/s]
Loss: 0.5819423940587551
AUROC: 0.5676523014796353
AUPRC: 0.31018908278744667
Sensitivity: 0.5446998722860792
Specificity: 0.5583257090576396
Threshold: 0.34
Accuracy:  0.5547322330751094

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0042.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.59it/s]
Loss: 0.5938221476972103
AUROC: 0.616534706009743
AUPRC: 0.36701979167727283
Sensitivity: 0.5871404399323181
Specificity: 0.5787623066104078
Threshold: 0.31
Accuracy:  0.5812220566318927

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.57it/s]
Loss: 0.5767018300421695
AUROC: 0.5621471946755097
AUPRC: 0.30700111453020024
Sensitivity: 0.541507024265645
Specificity: 0.5439158279963403
Threshold: 0.31
Accuracy:  0.5432805658470866

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0043.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.54it/s]
Loss: 0.6012262441217899
AUROC: 0.6154911578030513
AUPRC: 0.37551871312722696
Sensitivity: 0.6192893401015228
Specificity: 0.5520393811533052
Threshold: 0.36
Accuracy:  0.5717834078489816

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.57it/s]
Loss: 0.5913646715752622
AUROC: 0.5563546439141922
AUPRC: 0.30022637818479436
Sensitivity: 0.5715197956577267
Specificity: 0.5192131747483989
Threshold: 0.36
Accuracy:  0.533007746716066

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0044.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.56it/s]
Loss: 0.6074793860316277
AUROC: 0.6164567671185932
AUPRC: 0.37416682802702006
Sensitivity: 0.6328257191201354
Specificity: 0.5330520393811533
Threshold: 0.38
Accuracy:  0.5623447590660705

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.57it/s]
Loss: 0.5992575845819839
AUROC: 0.5758449654658286
AUPRC: 0.31542064778538353
Sensitivity: 0.6379310344827587
Specificity: 0.48581884720951507
Threshold: 0.38
Accuracy:  0.5259346581340518

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0045.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.56it/s]
Loss: 0.60191610455513
AUROC: 0.6040775723998753
AUPRC: 0.3693540762524012
Sensitivity: 0.6057529610829103
Specificity: 0.5464135021097046
Threshold: 0.35000000000000003
Accuracy:  0.5638350720317934

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.59it/s]
Loss: 0.5903139932358519
AUROC: 0.548791420849502
AUPRC: 0.29788270055581323
Sensitivity: 0.5696040868454662
Specificity: 0.5112076852698993
Threshold: 0.35000000000000003
Accuracy:  0.5266082856180532

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0046.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.58it/s]
Loss: 0.6023987270891666
AUROC: 0.5987908167757812
AUPRC: 0.35328845924269564
Sensitivity: 0.5989847715736041
Specificity: 0.5464135021097046
Threshold: 0.35000000000000003
Accuracy:  0.5618479880774963

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.58it/s]
Loss: 0.5890434859914983
AUROC: 0.5497277315647351
AUPRC: 0.2962222621759718
Sensitivity: 0.5485312899106003
Specificity: 0.5237877401646843
Threshold: 0.35000000000000003
Accuracy:  0.5303132367800606

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0047.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.58it/s]
Loss: 0.6024179495871067
AUROC: 0.6236140561302805
AUPRC: 0.37858148049539875
Sensitivity: 0.5465313028764806
Specificity: 0.629395218002813
Threshold: 0.37
Accuracy:  0.6050670640834576

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.57it/s]
Loss: 0.5915798988748104
AUROC: 0.5716251041400109
AUPRC: 0.31577312538909674
Sensitivity: 0.5306513409961686
Specificity: 0.5802836230558097
Threshold: 0.37
Accuracy:  0.5671943415291344

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0048.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
Loss: 0.598854087293148
AUROC: 0.6193464556248082
AUPRC: 0.3788523624968622
Sensitivity: 0.5634517766497462
Specificity: 0.5921237693389592
Threshold: 0.35000000000000003
Accuracy:  0.583705911574764

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.55it/s]
Loss: 0.5843954695031998
AUROC: 0.564628954837413
AUPRC: 0.30439177704599607
Sensitivity: 0.5466155810983397
Specificity: 0.5526075022872827
Threshold: 0.35000000000000003
Accuracy:  0.551027281913102

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0049.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.61it/s]
Loss: 0.5945303924381733
AUROC: 0.6193571647854241
AUPRC: 0.37591264385510603
Sensitivity: 0.5854483925549916
Specificity: 0.5759493670886076
Threshold: 0.34
Accuracy:  0.5787382016890213

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.40it/s]
Loss: 0.5809472583709879
AUROC: 0.566851606472864
AUPRC: 0.3038031432475964
Sensitivity: 0.5696040868454662
Specificity: 0.5313357731015553
Threshold: 0.34
Accuracy:  0.5414280902660829

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0050.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.57it/s]
Loss: 0.5989195965230465
AUROC: 0.6229732913534237
AUPRC: 0.37060692676312096
Sensitivity: 0.5431472081218274
Specificity: 0.6336146272855133
Threshold: 0.35000000000000003
Accuracy:  0.6070541480377546

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.56it/s]
Loss: 0.5847897643738604
AUROC: 0.5693765270460225
AUPRC: 0.30739197973171506
Sensitivity: 0.5070242656449553
Specificity: 0.5910338517840805
Threshold: 0.35000000000000003
Accuracy:  0.5688784102391378

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0051.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.61it/s]
Loss: 0.5947337597608566
AUROC: 0.6135147227160335
AUPRC: 0.3683416359782694
Sensitivity: 0.5499153976311336
Specificity: 0.6118143459915611
Threshold: 0.34
Accuracy:  0.5936413313462494

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:17<00:00,  2.61it/s]
Loss: 0.5815622362684696
AUROC: 0.5622725862594777
AUPRC: 0.3075473377609824
Sensitivity: 0.5166028097062579
Specificity: 0.5610704483074108
Threshold: 0.34
Accuracy:  0.5493432132030986

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0052.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.55it/s]
Loss: 0.5879386961460114
AUROC: 0.6322860964157629
AUPRC: 0.384360975796617
Sensitivity: 0.5922165820642978
Specificity: 0.6033755274261603
Threshold: 0.33
Accuracy:  0.6000993541977149

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.54it/s]
Loss: 0.577065276972791
AUROC: 0.5707116516459672
AUPRC: 0.3125143979512674
Sensitivity: 0.5549169859514687
Specificity: 0.5432296431838975
Threshold: 0.33
Accuracy:  0.5463118895250926

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0053.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.57it/s]
Loss: 0.5914422310888767
AUROC: 0.6298902192046187
AUPRC: 0.3870080792755418
Sensitivity: 0.5786802030456852
Specificity: 0.59985935302391
Threshold: 0.33
Accuracy:  0.5936413313462494

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.56it/s]
Loss: 0.5759629524768667
AUROC: 0.5825194930236417
AUPRC: 0.32415300694057547
Sensitivity: 0.565772669220945
Specificity: 0.5423147301006405
Threshold: 0.33
Accuracy:  0.548501178848097

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0054.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.57it/s]
Loss: 0.6017374657094479
AUROC: 0.624145349487507
AUPRC: 0.3666177270736732
Sensitivity: 0.6463620981387479
Specificity: 0.5288326300984529
Threshold: 0.36
Accuracy:  0.563338301043219

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.59it/s]
Loss: 0.5896571627322663
AUROC: 0.5745409514161289
AUPRC: 0.3173014438800898
Sensitivity: 0.6219667943805874
Specificity: 0.4869624885635865
Threshold: 0.36
Accuracy:  0.5225665207140451

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0055.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.58it/s]
Loss: 0.5944309122860432
AUROC: 0.62309585174714
AUPRC: 0.37400937186503436
Sensitivity: 0.5549915397631133
Specificity: 0.620253164556962
Threshold: 0.34
Accuracy:  0.6010928961748634

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.59it/s]
Loss: 0.5791510121619448
AUROC: 0.569878093381895
AUPRC: 0.3075856288649266
Sensitivity: 0.5319284802043422
Specificity: 0.5661024702653248
Threshold: 0.34
Accuracy:  0.5570899292691142

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0056.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.56it/s]
Loss: 0.592433825135231
AUROC: 0.63395613051849
AUPRC: 0.39798843944254003
Sensitivity: 0.637901861252115
Specificity: 0.5815752461322081
Threshold: 0.31
Accuracy:  0.5981122702434177

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.57it/s]
Loss: 0.5753353745379346
AUROC: 0.5730800700849128
AUPRC: 0.3184857386494603
Sensitivity: 0.51213282247765
Specificity: 0.5869167429094236
Threshold: 0.32
Accuracy:  0.5671943415291344

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0057.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.56it/s]
Loss: 0.5884952321648598
AUROC: 0.6354566029114637
AUPRC: 0.38898718273427046
Sensitivity: 0.5803722504230119
Specificity: 0.6195499296765119
Threshold: 0.28
Accuracy:  0.6080476900149031

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.54it/s]
Loss: 0.5677454826679635
AUROC: 0.5765847539024023
AUPRC: 0.31088179736774246
Sensitivity: 0.5504469987228607
Specificity: 0.5562671546203111
Threshold: 0.28
Accuracy:  0.5547322330751094

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0058.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
Loss: 0.5963251367211342
AUROC: 0.5954483687568568
AUPRC: 0.364125929241393
Sensitivity: 0.5499153976311336
Specificity: 0.5857946554149086
Threshold: 0.29
Accuracy:  0.5752608047690015

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.60it/s]
Loss: 0.5733828113434163
AUROC: 0.5533721937699443
AUPRC: 0.2973322633988272
Sensitivity: 0.5185185185185185
Specificity: 0.5661024702653248
Threshold: 0.29
Accuracy:  0.5535533849781071

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0059.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.59it/s]
Loss: 0.5880690850317478
AUROC: 0.6317381443642447
AUPRC: 0.39627523654420016
Sensitivity: 0.6243654822335025
Specificity: 0.5745428973277075
Threshold: 0.3
Accuracy:  0.589170392449081

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.55it/s]
Loss: 0.5710130086604585
AUROC: 0.5788642224582534
AUPRC: 0.31906249795841957
Sensitivity: 0.5395913154533845
Specificity: 0.5683897529734675
Threshold: 0.31
Accuracy:  0.5607948804311216

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0060.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.57it/s]
Loss: 0.593995850533247
AUROC: 0.6304417409763423
AUPRC: 0.3886269146507443
Sensitivity: 0.637901861252115
Specificity: 0.5668073136427567
Threshold: 0.34
Accuracy:  0.5876800794833582

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.59it/s]
Loss: 0.5820013113478397
AUROC: 0.5765531321459327
AUPRC: 0.31625554822836677
Sensitivity: 0.5312899106002554
Specificity: 0.5683897529734675
Threshold: 0.35000000000000003
Accuracy:  0.5586055911081172

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0061.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.57it/s]
Loss: 0.6017042249441147
AUROC: 0.6278304906461432
AUPRC: 0.3869311771716185
Sensitivity: 0.6429780033840947
Specificity: 0.5450070323488045
Threshold: 0.37
Accuracy:  0.5737704918032787

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.58it/s]
Loss: 0.5922764628491504
AUROC: 0.5665190303089789
AUPRC: 0.3016540472269895
Sensitivity: 0.590676883780332
Specificity: 0.49954254345837146
Threshold: 0.37
Accuracy:  0.5235769619400471

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0062.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
Loss: 0.60140435770154
AUROC: 0.5879186389370801
AUPRC: 0.3709016034652908
Sensitivity: 0.5329949238578681
Specificity: 0.569620253164557
Threshold: 0.26
Accuracy:  0.5588673621460507

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.56it/s]
Loss: 0.5746948788774774
AUROC: 0.5407614665016784
AUPRC: 0.2862524064873547
Sensitivity: 0.4955300127713921
Specificity: 0.5484903934126258
Threshold: 0.26
Accuracy:  0.5345234085550691

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0063.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.57it/s]
Loss: 0.589737556874752
AUROC: 0.6349782604039494
AUPRC: 0.37975460901482083
Sensitivity: 0.5482233502538071
Specificity: 0.6357243319268636
Threshold: 0.32
Accuracy:  0.6100347739692003

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.58it/s]
Loss: 0.574677642355574
AUROC: 0.5727639985791388
AUPRC: 0.3106711591951942
Sensitivity: 0.5280970625798213
Specificity: 0.5821134492223239
Threshold: 0.32
Accuracy:  0.5678679690131357

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0064.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.57it/s]
Loss: 0.603820264339447
AUROC: 0.628537890200166
AUPRC: 0.3853259131465143
Sensitivity: 0.5296108291032149
Specificity: 0.6483825597749648
Threshold: 0.38
Accuracy:  0.61351217088922

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.57it/s]
Loss: 0.5939276104277753
AUROC: 0.5808951717594492
AUPRC: 0.3168810736722375
Sensitivity: 0.5383141762452107
Specificity: 0.5811985361390668
Threshold: 0.38
Accuracy:  0.5698888514651398

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0065.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.57it/s]
Loss: 0.5951895155012608
AUROC: 0.6284587614022813
AUPRC: 0.39220409792781086
Sensitivity: 0.626057529610829
Specificity: 0.5668073136427567
Threshold: 0.34
Accuracy:  0.5842026825633383

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.49it/s]
Loss: 0.5826535294664666
AUROC: 0.573959709938667
AUPRC: 0.3115626319557597
Sensitivity: 0.5312899106002554
Specificity: 0.5681610247026533
Threshold: 0.35000000000000003
Accuracy:  0.5584371842371169

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0066.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.60it/s]
Loss: 0.5950582437217236
AUROC: 0.6312157753075314
AUPRC: 0.38233701975063117
Sensitivity: 0.6023688663282571
Specificity: 0.5914205344585092
Threshold: 0.36
Accuracy:  0.5946348733233979

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.56it/s]
Loss: 0.5854462721246354
AUROC: 0.5775125932001977
AUPRC: 0.3123920238046576
Sensitivity: 0.5830140485312899
Specificity: 0.5224153705397987
Threshold: 0.36
Accuracy:  0.5383967665880768

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0067.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.60it/s]
Loss: 0.6067629493772984
AUROC: 0.5972992686833207
AUPRC: 0.3530775398426435
Sensitivity: 0.5702199661590525
Specificity: 0.5576652601969058
Threshold: 0.23
Accuracy:  0.561351217088922

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.55it/s]
Loss: 0.5737737753289811
AUROC: 0.553273750056963
AUPRC: 0.2960705030830969
Sensitivity: 0.5306513409961686
Specificity: 0.5388838060384263
Threshold: 0.23
Accuracy:  0.5367126978780734

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0068.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.60it/s]
Loss: 0.5924495533108711
AUROC: 0.6158862068391079
AUPRC: 0.36756793613090477
Sensitivity: 0.5634517766497462
Specificity: 0.5963431786216596
Threshold: 0.34
Accuracy:  0.5866865375062096

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.58it/s]
Loss: 0.5804218840091786
AUROC: 0.5675259605126786
AUPRC: 0.30027946038164255
Sensitivity: 0.5383141762452107
Specificity: 0.5649588289112535
Threshold: 0.34
Accuracy:  0.5579319636241159

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0069.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.54it/s]
Loss: 0.62906514108181
AUROC: 0.6112854324478048
AUPRC: 0.34753879643999763
Sensitivity: 0.44839255499153974
Specificity: 0.6673699015471167
Threshold: 0.2
Accuracy:  0.6030799801291604

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.59it/s]
Loss: 0.5838266554030966
AUROC: 0.5696862449887183
AUPRC: 0.30377880750284514
Sensitivity: 0.4438058748403576
Specificity: 0.6363220494053065
Threshold: 0.2
Accuracy:  0.5855506904681711

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0070.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.58it/s]
Loss: 0.6126929931342602
AUROC: 0.6118857403956677
AUPRC: 0.35459725916668516
Sensitivity: 0.6683587140439933
Specificity: 0.5161744022503516
Threshold: 0.21
Accuracy:  0.5608544461003477

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.60it/s]
Loss: 0.57576984167099
AUROC: 0.5609834702197544
AUPRC: 0.29973228630141857
Sensitivity: 0.6053639846743295
Specificity: 0.48581884720951507
Threshold: 0.21
Accuracy:  0.5173459077130347

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0071.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.56it/s]
Loss: 0.5921268165111542
AUROC: 0.6265346822116082
AUPRC: 0.3911300536153623
Sensitivity: 0.6057529610829103
Specificity: 0.5843881856540084
Threshold: 0.34
Accuracy:  0.5906607054148038

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.53it/s]
Loss: 0.5795546839845941
AUROC: 0.5756933563054805
AUPRC: 0.3109908385194504
Sensitivity: 0.5842911877394636
Specificity: 0.5285910338517841
Threshold: 0.34
Accuracy:  0.5432805658470866

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0072.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.51it/s]
Loss: 0.5951020829379559
AUROC: 0.6341703137308098
AUPRC: 0.4065393790929961
Sensitivity: 0.5583756345177665
Specificity: 0.6265822784810127
Threshold: 0.38
Accuracy:  0.6065573770491803

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.58it/s]
Loss: 0.5881216976236789
AUROC: 0.5808393772514983
AUPRC: 0.3183289734391644
Sensitivity: 0.5530012771392082
Specificity: 0.5594693504117109
Threshold: 0.38
Accuracy:  0.5577635567531155

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0073.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.57it/s]
Loss: 0.593527302145958
AUROC: 0.6172629289316303
AUPRC: 0.38243811024194607
Sensitivity: 0.5634517766497462
Specificity: 0.5963431786216596
Threshold: 0.35000000000000003
Accuracy:  0.5866865375062096

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.53it/s]
Loss: 0.5829040427157219
AUROC: 0.5601863536565559
AUPRC: 0.29434214661561187
Sensitivity: 0.5287356321839081
Specificity: 0.5645013723696248
Threshold: 0.35000000000000003
Accuracy:  0.5550690468171101

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0074.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.57it/s]
Loss: 0.5992019474506378
AUROC: 0.6414418337890676
AUPRC: 0.38814367407757616
Sensitivity: 0.5939086294416244
Specificity: 0.6090014064697609
Threshold: 0.38
Accuracy:  0.6045702930948833

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.59it/s]
Loss: 0.5934087152176715
AUROC: 0.5847038041922417
AUPRC: 0.3222317102977667
Sensitivity: 0.5798212005108557
Specificity: 0.5381976212259836
Threshold: 0.38
Accuracy:  0.5491748063320984

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0075.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.58it/s]
Loss: 0.5894219614565372
AUROC: 0.6306327210073274
AUPRC: 0.4010468712474339
Sensitivity: 0.5634517766497462
Specificity: 0.6167369901547117
Threshold: 0.34
Accuracy:  0.6010928961748634

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.60it/s]
Loss: 0.5778599508265232
AUROC: 0.5747368164296421
AUPRC: 0.3129788056052006
Sensitivity: 0.5408684546615581
Specificity: 0.5608417200365965
Threshold: 0.34
Accuracy:  0.5555742674301112

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0076.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.54it/s]
Loss: 0.6002972088754177
AUROC: 0.6355041991808682
AUPRC: 0.3988294886985236
Sensitivity: 0.5803722504230119
Specificity: 0.6181434599156118
Threshold: 0.39
Accuracy:  0.6070541480377546

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.54it/s]
Loss: 0.5945882968446041
AUROC: 0.570099810824485
AUPRC: 0.30356452286850377
Sensitivity: 0.5472541507024266
Specificity: 0.5498627630375115
Threshold: 0.39
Accuracy:  0.5491748063320984

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0077.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.59it/s]
Loss: 0.595937941223383
AUROC: 0.6320986861049831
AUPRC: 0.4026502692233117
Sensitivity: 0.5922165820642978
Specificity: 0.5928270042194093
Threshold: 0.35000000000000003
Accuracy:  0.5926477893691009

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.58it/s]
Loss: 0.5840567153819064
AUROC: 0.5755190349828644
AUPRC: 0.3089387119630585
Sensitivity: 0.5753512132822478
Specificity: 0.5263037511436414
Threshold: 0.35000000000000003
Accuracy:  0.5392388009430785


Plot AUROC/AUPRC for Each Intermediate Model
  Epoch with best Validation Loss:      57, 0.5863
  Epoch with best model Test AUROC:     74, 0.5847
  Epoch with best model Test Accuracy:  69, 0.5856

AUROC/AUPRC Plots - Best Model Based on Validation Loss
  Epoch with best Validation Loss:   57, 0.5863
  Best Model Based on Validation Loss:
    ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0057.model

Generate Stats Based on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.54it/s]
Loss: 0.5677454826679635
AUROC: 0.5765847539024023
AUPRC: 0.31088179736774246
Sensitivity: 0.5504469987228607
Specificity: 0.5562671546203111
Threshold: 0.28
Accuracy:  0.5547322330751094
best_model_val_test_auroc: 0.5765847539024023
best_model_val_test_auprc: 0.31088179736774246

AUROC/AUPRC Plots - Best Model Based on Model AUROC
  Epoch with best model Test AUROC:  74, 0.5847
  Best Model Based on Model AUROC:
    ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_6e41ecbf_0074.model

Generate Stats Based on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.55it/s]
Loss: 0.5934087152176715
AUROC: 0.5847038041922417
AUPRC: 0.3222317102977667
Sensitivity: 0.5798212005108557
Specificity: 0.5381976212259836
Threshold: 0.38
Accuracy:  0.5491748063320984
best_model_auroc_test_auroc: 0.5847038041922417
best_model_auroc_test_auprc: 0.3222317102977667

Total Processing Time: 5573.9330 sec
In [103]:
RUN_ME = True

if MULTI_RUN and RUN_ME:
    run_experiment(
        experimentNamePrefix=None, 
        useAbp=True, 
        useEeg=False, 
        useEcg=True,
        nResiduals=12, 
        skip_connection=False,
        batch_size=128,
        learning_rate=1e-4,
        weight_decay=1e-1,
        balance_labels=False,
        #pos_weight=2.0,
        pos_weight=None,
        max_epochs=200,
        patience=20,
        device=device
    )
Experiment Setup
  name:              ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450
  prediction_window: 003
  max_cases:         _ALL
  use_abp:           True
  use_eeg:           False
  use_ecg:           True
  n_residuals:       12
  skip_connection:   False
  batch_size:        128
  learning_rate:     0.0001
  weight_decay:      0.1
  balance_labels:    False
  max_epochs:        200
  patience:          20
  device:            mps

Model Architecture
HypotensionCNN(
  (abpResiduals): Sequential(
    (0): ResidualBlock(
      (bn1): BatchNorm1d(1, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (1): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (2): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (3): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (4): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (5): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (6): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (7): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (8): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=1, dilation=1, ceil_mode=False)
    )
    (9): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (10): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (11): ResidualBlock(
      (bn1): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
  )
  (abpFc): Linear(in_features=2814, out_features=32, bias=True)
  (ecgResiduals): Sequential(
    (0): ResidualBlock(
      (bn1): BatchNorm1d(1, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (1): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (2): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (3): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (4): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (5): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (6): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (7): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (8): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=1, dilation=1, ceil_mode=False)
    )
    (9): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (10): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (11): ResidualBlock(
      (bn1): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
  )
  (ecgFc): Linear(in_features=2814, out_features=32, bias=True)
  (fullLinear1): Linear(in_features=64, out_features=16, bias=True)
  (fullLinear2): Linear(in_features=16, out_features=1, bias=True)
  (sigmoid): Sigmoid()
)

Training Loop
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:59<00:00,  1.55it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.38it/s]
[2024-05-04 16:00:00.680075] Completed epoch 0 with training loss 0.50498241, validation loss 0.65606743
Validation loss improved to 0.65606743. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:59<00:00,  1.56it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.34it/s]
[2024-05-04 16:01:06.706327] Completed epoch 1 with training loss 0.43999386, validation loss 0.63262534
Validation loss improved to 0.63262534. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [01:00<00:00,  1.51it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.34it/s]
[2024-05-04 16:02:14.464019] Completed epoch 2 with training loss 0.43480659, validation loss 0.65605694
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:58<00:00,  1.56it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.29it/s]
[2024-05-04 16:03:20.438554] Completed epoch 3 with training loss 0.43582377, validation loss 0.68556905
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:59<00:00,  1.55it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.40it/s]
[2024-05-04 16:04:26.572755] Completed epoch 4 with training loss 0.43498370, validation loss 0.65997696
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:59<00:00,  1.56it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.27it/s]
[2024-05-04 16:05:32.779388] Completed epoch 5 with training loss 0.43199170, validation loss 0.65476775
No improvement in validation loss. 4 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:59<00:00,  1.55it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.31it/s]
[2024-05-04 16:06:39.279654] Completed epoch 6 with training loss 0.43400139, validation loss 0.58583337
Validation loss improved to 0.58583337. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:59<00:00,  1.56it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.33it/s]
[2024-05-04 16:07:45.329336] Completed epoch 7 with training loss 0.42922077, validation loss 0.53295040
Validation loss improved to 0.53295040. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:59<00:00,  1.56it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.37it/s]
[2024-05-04 16:08:51.205743] Completed epoch 8 with training loss 0.43213883, validation loss 0.56339967
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:59<00:00,  1.56it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.35it/s]
[2024-05-04 16:09:57.210833] Completed epoch 9 with training loss 0.42984250, validation loss 0.62532753
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:58<00:00,  1.56it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.36it/s]
[2024-05-04 16:11:02.878375] Completed epoch 10 with training loss 0.43032604, validation loss 0.57627738
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:59<00:00,  1.55it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.37it/s]
[2024-05-04 16:12:09.148326] Completed epoch 11 with training loss 0.43017194, validation loss 0.51597595
Validation loss improved to 0.51597595. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:59<00:00,  1.55it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.30it/s]
[2024-05-04 16:13:15.691314] Completed epoch 12 with training loss 0.43009651, validation loss 0.54034591
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:59<00:00,  1.55it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.31it/s]
[2024-05-04 16:14:22.065471] Completed epoch 13 with training loss 0.42870438, validation loss 0.54236460
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:59<00:00,  1.55it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.33it/s]
[2024-05-04 16:15:28.462524] Completed epoch 14 with training loss 0.42903107, validation loss 0.59159887
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:59<00:00,  1.55it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.34it/s]
[2024-05-04 16:16:34.695845] Completed epoch 15 with training loss 0.42700389, validation loss 0.51597643
No improvement in validation loss. 4 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:58<00:00,  1.56it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.36it/s]
[2024-05-04 16:17:40.427613] Completed epoch 16 with training loss 0.42837280, validation loss 0.55112314
No improvement in validation loss. 5 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:59<00:00,  1.56it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.42it/s]
[2024-05-04 16:18:46.177951] Completed epoch 17 with training loss 0.42579994, validation loss 0.51665640
No improvement in validation loss. 6 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:59<00:00,  1.55it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.34it/s]
[2024-05-04 16:19:52.606032] Completed epoch 18 with training loss 0.42575336, validation loss 0.56074691
No improvement in validation loss. 7 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:58<00:00,  1.56it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.32it/s]
[2024-05-04 16:20:58.362976] Completed epoch 19 with training loss 0.42520139, validation loss 0.56314635
No improvement in validation loss. 8 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:59<00:00,  1.55it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.35it/s]
[2024-05-04 16:22:04.598397] Completed epoch 20 with training loss 0.42429361, validation loss 0.54646039
No improvement in validation loss. 9 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:59<00:00,  1.54it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.40it/s]
[2024-05-04 16:23:10.953556] Completed epoch 21 with training loss 0.42508259, validation loss 0.59218073
No improvement in validation loss. 10 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:59<00:00,  1.55it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.36it/s]
[2024-05-04 16:24:17.289353] Completed epoch 22 with training loss 0.42568430, validation loss 0.55556059
No improvement in validation loss. 11 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:58<00:00,  1.56it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.32it/s]
[2024-05-04 16:25:23.257632] Completed epoch 23 with training loss 0.42564464, validation loss 0.52707255
No improvement in validation loss. 12 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:58<00:00,  1.56it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.32it/s]
[2024-05-04 16:26:29.191924] Completed epoch 24 with training loss 0.42459607, validation loss 0.53042006
No improvement in validation loss. 13 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:59<00:00,  1.55it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.30it/s]
[2024-05-04 16:27:35.477468] Completed epoch 25 with training loss 0.42454603, validation loss 0.59233892
No improvement in validation loss. 14 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:59<00:00,  1.55it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.34it/s]
[2024-05-04 16:28:41.682755] Completed epoch 26 with training loss 0.42587280, validation loss 0.55131066
No improvement in validation loss. 15 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:59<00:00,  1.56it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.30it/s]
[2024-05-04 16:29:47.773605] Completed epoch 27 with training loss 0.42299035, validation loss 0.53890467
No improvement in validation loss. 16 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:59<00:00,  1.55it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.38it/s]
[2024-05-04 16:30:53.787714] Completed epoch 28 with training loss 0.42259958, validation loss 0.52594829
No improvement in validation loss. 17 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:59<00:00,  1.55it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.35it/s]
[2024-05-04 16:32:00.101580] Completed epoch 29 with training loss 0.42401364, validation loss 0.51163560
Validation loss improved to 0.51163560. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:58<00:00,  1.56it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.38it/s]
[2024-05-04 16:33:05.744749] Completed epoch 30 with training loss 0.42322856, validation loss 0.52297068
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:59<00:00,  1.54it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.36it/s]
[2024-05-04 16:34:12.168379] Completed epoch 31 with training loss 0.42327544, validation loss 0.46669716
Validation loss improved to 0.46669716. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.59it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.42it/s]
[2024-05-04 16:35:16.705311] Completed epoch 32 with training loss 0.42309308, validation loss 0.49379212
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.61it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.42it/s]
[2024-05-04 16:36:20.501910] Completed epoch 33 with training loss 0.42420179, validation loss 0.53576261
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:56<00:00,  1.63it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.38it/s]
[2024-05-04 16:37:23.884428] Completed epoch 34 with training loss 0.42193872, validation loss 0.49957183
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.59it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.36it/s]
[2024-05-04 16:38:28.513950] Completed epoch 35 with training loss 0.42147627, validation loss 0.50564480
No improvement in validation loss. 4 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.59it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.28it/s]
[2024-05-04 16:39:33.394319] Completed epoch 36 with training loss 0.42208871, validation loss 0.49456102
No improvement in validation loss. 5 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.60it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.35it/s]
[2024-05-04 16:40:37.885183] Completed epoch 37 with training loss 0.42118180, validation loss 0.51059103
No improvement in validation loss. 6 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:58<00:00,  1.59it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.29it/s]
[2024-05-04 16:41:42.978704] Completed epoch 38 with training loss 0.42298993, validation loss 0.51343536
No improvement in validation loss. 7 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.59it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.35it/s]
[2024-05-04 16:42:47.594417] Completed epoch 39 with training loss 0.42178535, validation loss 0.51314032
No improvement in validation loss. 8 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.60it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.32it/s]
[2024-05-04 16:43:52.232375] Completed epoch 40 with training loss 0.41980290, validation loss 0.55536085
No improvement in validation loss. 9 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.59it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.35it/s]
[2024-05-04 16:44:56.931098] Completed epoch 41 with training loss 0.42341486, validation loss 0.47476947
No improvement in validation loss. 10 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.59it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.34it/s]
[2024-05-04 16:46:01.665803] Completed epoch 42 with training loss 0.42300627, validation loss 0.52928650
No improvement in validation loss. 11 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:58<00:00,  1.57it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.35it/s]
[2024-05-04 16:47:07.060170] Completed epoch 43 with training loss 0.42180610, validation loss 0.45246091
Validation loss improved to 0.45246091. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.59it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.38it/s]
[2024-05-04 16:48:11.734097] Completed epoch 44 with training loss 0.42232534, validation loss 0.55106848
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.60it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.37it/s]
[2024-05-04 16:49:15.909913] Completed epoch 45 with training loss 0.42369080, validation loss 0.51589644
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:58<00:00,  1.59it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.36it/s]
[2024-05-04 16:50:20.794289] Completed epoch 46 with training loss 0.42153743, validation loss 0.48243874
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:58<00:00,  1.58it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.30it/s]
[2024-05-04 16:51:26.080620] Completed epoch 47 with training loss 0.42217943, validation loss 0.46198151
No improvement in validation loss. 4 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.60it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.35it/s]
[2024-05-04 16:52:30.575623] Completed epoch 48 with training loss 0.42100322, validation loss 0.47232172
No improvement in validation loss. 5 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.60it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.35it/s]
[2024-05-04 16:53:35.054935] Completed epoch 49 with training loss 0.42088118, validation loss 0.48037475
No improvement in validation loss. 6 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:58<00:00,  1.58it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.34it/s]
[2024-05-04 16:54:40.171753] Completed epoch 50 with training loss 0.42335084, validation loss 0.47180843
No improvement in validation loss. 7 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:58<00:00,  1.58it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.34it/s]
[2024-05-04 16:55:45.374745] Completed epoch 51 with training loss 0.42272538, validation loss 0.48097122
No improvement in validation loss. 8 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.60it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.38it/s]
[2024-05-04 16:56:49.578818] Completed epoch 52 with training loss 0.42105943, validation loss 0.45661968
No improvement in validation loss. 9 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.60it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.26it/s]
[2024-05-04 16:57:54.254282] Completed epoch 53 with training loss 0.42185497, validation loss 0.54471242
No improvement in validation loss. 10 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.60it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.37it/s]
[2024-05-04 16:58:58.542714] Completed epoch 54 with training loss 0.42081490, validation loss 0.48003435
No improvement in validation loss. 11 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.59it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.36it/s]
[2024-05-04 17:00:03.086244] Completed epoch 55 with training loss 0.42234126, validation loss 0.48206955
No improvement in validation loss. 12 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.60it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.35it/s]
[2024-05-04 17:01:07.366969] Completed epoch 56 with training loss 0.42026171, validation loss 0.48420608
No improvement in validation loss. 13 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.59it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.33it/s]
[2024-05-04 17:02:12.141568] Completed epoch 57 with training loss 0.42173406, validation loss 0.45016351
Validation loss improved to 0.45016351. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:59<00:00,  1.55it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.19it/s]
[2024-05-04 17:03:18.833885] Completed epoch 58 with training loss 0.42110386, validation loss 0.48835397
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [01:00<00:00,  1.52it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.24it/s]
[2024-05-04 17:04:26.698203] Completed epoch 59 with training loss 0.42043403, validation loss 0.53597903
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:59<00:00,  1.54it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.23it/s]
[2024-05-04 17:05:33.821782] Completed epoch 60 with training loss 0.42057216, validation loss 0.49685776
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [01:00<00:00,  1.52it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.21it/s]
[2024-05-04 17:06:41.641257] Completed epoch 61 with training loss 0.42061085, validation loss 0.51621425
No improvement in validation loss. 4 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [01:01<00:00,  1.50it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.23it/s]
[2024-05-04 17:07:50.315304] Completed epoch 62 with training loss 0.42129785, validation loss 0.47799936
No improvement in validation loss. 5 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [01:00<00:00,  1.53it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.20it/s]
[2024-05-04 17:08:57.783640] Completed epoch 63 with training loss 0.42069477, validation loss 0.49599004
No improvement in validation loss. 6 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [01:01<00:00,  1.50it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.27it/s]
[2024-05-04 17:10:06.342440] Completed epoch 64 with training loss 0.42080897, validation loss 0.47912005
No improvement in validation loss. 7 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [01:01<00:00,  1.50it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.23it/s]
[2024-05-04 17:11:14.976675] Completed epoch 65 with training loss 0.42022908, validation loss 0.47565138
No improvement in validation loss. 8 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [01:01<00:00,  1.50it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.21it/s]
[2024-05-04 17:12:23.637778] Completed epoch 66 with training loss 0.42026067, validation loss 0.59196210
No improvement in validation loss. 9 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [01:01<00:00,  1.50it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.20it/s]
[2024-05-04 17:13:32.181005] Completed epoch 67 with training loss 0.41876489, validation loss 0.47479415
No improvement in validation loss. 10 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [01:00<00:00,  1.52it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.26it/s]
[2024-05-04 17:14:39.814225] Completed epoch 68 with training loss 0.42007297, validation loss 0.48317698
No improvement in validation loss. 11 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [01:01<00:00,  1.50it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.35it/s]
[2024-05-04 17:15:48.023556] Completed epoch 69 with training loss 0.42084938, validation loss 0.53446513
No improvement in validation loss. 12 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [01:00<00:00,  1.52it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.23it/s]
[2024-05-04 17:16:55.939791] Completed epoch 70 with training loss 0.41999829, validation loss 0.54131907
No improvement in validation loss. 13 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [01:02<00:00,  1.48it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.31it/s]
[2024-05-04 17:18:04.992210] Completed epoch 71 with training loss 0.42134485, validation loss 0.56712717
No improvement in validation loss. 14 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [01:02<00:00,  1.47it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.29it/s]
[2024-05-04 17:19:14.582693] Completed epoch 72 with training loss 0.42183620, validation loss 0.53149402
No improvement in validation loss. 15 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [01:00<00:00,  1.51it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.30it/s]
[2024-05-04 17:20:22.426251] Completed epoch 73 with training loss 0.42079431, validation loss 0.47058716
No improvement in validation loss. 16 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [01:01<00:00,  1.50it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.20it/s]
[2024-05-04 17:21:31.025577] Completed epoch 74 with training loss 0.42129704, validation loss 0.46874759
No improvement in validation loss. 17 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [01:02<00:00,  1.48it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.22it/s]
[2024-05-04 17:22:40.434193] Completed epoch 75 with training loss 0.41989654, validation loss 0.47234309
No improvement in validation loss. 18 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [01:01<00:00,  1.49it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.27it/s]
[2024-05-04 17:23:49.264489] Completed epoch 76 with training loss 0.41950801, validation loss 0.47403568
No improvement in validation loss. 19 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [01:00<00:00,  1.52it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.25it/s]
[2024-05-04 17:24:57.179044] Completed epoch 77 with training loss 0.41981643, validation loss 0.56807482
No improvement in validation loss. 20 epochs without improvement.
Early stopping due to no improvement in validation loss.

Plot Validation and Loss Values from Training
  Epoch with best Validation Loss:   57, 0.4502
Generate AUROC/AUPRC for Each Intermediate Model

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0000.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.45it/s]
Loss: 0.6535221077501774
AUROC: 0.840463254490113
AUPRC: 0.6946083626045841
Sensitivity: 0.7800338409475466
Specificity: 0.7552742616033755
Threshold: 0.1
Accuracy:  0.7625434674615003

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.22it/s]
Loss: 0.6089156590243603
AUROC: 0.8273389291427277
AUPRC: 0.67235953227416
Sensitivity: 0.7420178799489144
Specificity: 0.7639524245196706
Threshold: 0.1
Accuracy:  0.7581677332435164

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0001.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.20it/s]
Loss: 0.633324658498168
AUROC: 0.8423980428414021
AUPRC: 0.7004690173647705
Sensitivity: 0.7631133671742809
Specificity: 0.7693389592123769
Threshold: 0.11
Accuracy:  0.767511177347243

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.24it/s]
Loss: 0.5861585425569656
AUROC: 0.8310984857779509
AUPRC: 0.6795817683347646
Sensitivity: 0.780970625798212
Specificity: 0.7289569990850869
Threshold: 0.1
Accuracy:  0.7426743011114854

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0002.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.22it/s]
Loss: 0.6544721089303493
AUROC: 0.8415615384066197
AUPRC: 0.7037275081153066
Sensitivity: 0.7461928934010152
Specificity: 0.7862165963431786
Threshold: 0.1
Accuracy:  0.7744659711872827

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.29it/s]
Loss: 0.6061489791312116
AUROC: 0.8315772669220944
AUPRC: 0.6830914547611323
Sensitivity: 0.7745849297573435
Specificity: 0.7378774016468436
Threshold: 0.09
Accuracy:  0.7475581003704951

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0003.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.18it/s]
Loss: 0.689953301101923
AUROC: 0.8413402157538892
AUPRC: 0.7056879464301592
Sensitivity: 0.7597292724196277
Specificity: 0.7735583684950773
Threshold: 0.08
Accuracy:  0.76949826130154

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.24it/s]
Loss: 0.6351058089986761
AUROC: 0.832047722707722
AUPRC: 0.6844306897387387
Sensitivity: 0.7343550446998723
Specificity: 0.7797346752058555
Threshold: 0.08
Accuracy:  0.7677669248905356

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0004.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.23it/s]
Loss: 0.6583728827536106
AUROC: 0.8417864307795554
AUPRC: 0.706588919053892
Sensitivity: 0.7648054145516074
Specificity: 0.770042194092827
Threshold: 0.09
Accuracy:  0.7685047193243915

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.29it/s]
Loss: 0.6096470714249509
AUROC: 0.8325213187601584
AUPRC: 0.6848314840831753
Sensitivity: 0.7394636015325671
Specificity: 0.772644098810613
Threshold: 0.09
Accuracy:  0.7638935668575277

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0005.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.19it/s]
Loss: 0.6536317206919193
AUROC: 0.8410403592566414
AUPRC: 0.70565783238435
Sensitivity: 0.7749576988155669
Specificity: 0.7623066104078763
Threshold: 0.09
Accuracy:  0.7660208643815202

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.24it/s]
Loss: 0.6040988799105299
AUROC: 0.8320529077994295
AUPRC: 0.6846296109772466
Sensitivity: 0.7452107279693486
Specificity: 0.7676120768526989
Threshold: 0.09
Accuracy:  0.7617042775345234

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0006.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.22it/s]
Loss: 0.5847234316170216
AUROC: 0.841197426945676
AUPRC: 0.7044323691112734
Sensitivity: 0.7445008460236887
Specificity: 0.7876230661040787
Threshold: 0.14
Accuracy:  0.7749627421758569

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.27it/s]
Loss: 0.5426369166754662
AUROC: 0.8323237740690497
AUPRC: 0.6841471165271296
Sensitivity: 0.7618135376756067
Specificity: 0.7522872827081427
Threshold: 0.13
Accuracy:  0.7547995958235096

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0007.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.25it/s]
Loss: 0.5316124390810728
AUROC: 0.8412914295777496
AUPRC: 0.7022551270107633
Sensitivity: 0.7783417935702199
Specificity: 0.759493670886076
Threshold: 0.18
Accuracy:  0.7650273224043715

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.24it/s]
Loss: 0.5008037939984747
AUROC: 0.8322837539246031
AUPRC: 0.6828456612506819
Sensitivity: 0.7477650063856961
Specificity: 0.7682982616651418
Threshold: 0.18
Accuracy:  0.7628831256315257

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0008.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.24it/s]
Loss: 0.5632645003497601
AUROC: 0.8405727259097432
AUPRC: 0.7028807186041721
Sensitivity: 0.7749576988155669
Specificity: 0.7559774964838256
Threshold: 0.14
Accuracy:  0.7615499254843517

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.28it/s]
Loss: 0.5263320505619049
AUROC: 0.8319123991171031
AUPRC: 0.6835591754633374
Sensitivity: 0.7509578544061303
Specificity: 0.7637236962488564
Threshold: 0.14
Accuracy:  0.7603570225665207

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0009.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.20it/s]
Loss: 0.6268001943826675
AUROC: 0.8397742984904843
AUPRC: 0.7042066196320375
Sensitivity: 0.766497461928934
Specificity: 0.7644163150492265
Threshold: 0.1
Accuracy:  0.7650273224043715

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.22it/s]
Loss: 0.5793284523360273
AUROC: 0.831277407956589
AUPRC: 0.6836794327420939
Sensitivity: 0.7471264367816092
Specificity: 0.7694419030192132
Threshold: 0.1
Accuracy:  0.7635567531155271

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0010.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.22it/s]
Loss: 0.5782081391662359
AUROC: 0.8399968110499499
AUPRC: 0.7032172750661687
Sensitivity: 0.754653130287648
Specificity: 0.7721518987341772
Threshold: 0.13
Accuracy:  0.7670144063586687

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.26it/s]
Loss: 0.5380125236003956
AUROC: 0.8313838849102438
AUPRC: 0.6834003280479546
Sensitivity: 0.7694763729246488
Specificity: 0.7410795974382434
Threshold: 0.12
Accuracy:  0.7485685415964971

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0011.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.22it/s]
Loss: 0.5159475617110729
AUROC: 0.8400896237752885
AUPRC: 0.7007136597703316
Sensitivity: 0.7749576988155669
Specificity: 0.7587904360056259
Threshold: 0.2
Accuracy:  0.7635370094386488

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.23it/s]
Loss: 0.48634079701088845
AUROC: 0.8314851037427305
AUPRC: 0.6830280395915668
Sensitivity: 0.7484035759897829
Specificity: 0.7673833485818847
Threshold: 0.2
Accuracy:  0.7623779050185248

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0012.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.22it/s]
Loss: 0.5414703134447336
AUROC: 0.83918648456334
AUPRC: 0.7022816504429727
Sensitivity: 0.7817258883248731
Specificity: 0.7489451476793249
Threshold: 0.16
Accuracy:  0.7585692995529061

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.29it/s]
Loss: 0.5070265693233368
AUROC: 0.830511694061478
AUPRC: 0.6826849697152985
Sensitivity: 0.7522349936143039
Specificity: 0.7573193046660567
Threshold: 0.16
Accuracy:  0.7559784439205119

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0013.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.19it/s]
Loss: 0.5406014006584883
AUROC: 0.8391960038172208
AUPRC: 0.7030283382247101
Sensitivity: 0.7614213197969543
Specificity: 0.770745428973277
Threshold: 0.15
Accuracy:  0.7680079483358172

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.22it/s]
Loss: 0.5078264725335101
AUROC: 0.8305922455565955
AUPRC: 0.6829843202967596
Sensitivity: 0.7630906768837803
Specificity: 0.7445105215004575
Threshold: 0.14
Accuracy:  0.7494105759514988

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0014.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.25it/s]
Loss: 0.591122180223465
AUROC: 0.8390960516514715
AUPRC: 0.7039656334274078
Sensitivity: 0.751269035532995
Specificity: 0.7819971870604782
Threshold: 0.12
Accuracy:  0.7729756582215599

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.30it/s]
Loss: 0.5502019543597039
AUROC: 0.8298694729843578
AUPRC: 0.6812635194439501
Sensitivity: 0.7662835249042146
Specificity: 0.7493138151875571
Threshold: 0.11
Accuracy:  0.7537891545975076

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0015.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.18it/s]
Loss: 0.5178104415535927
AUROC: 0.8383428406881468
AUPRC: 0.7033377519972768
Sensitivity: 0.751269035532995
Specificity: 0.770042194092827
Threshold: 0.19
Accuracy:  0.7645305514157973

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.26it/s]
Loss: 0.4876910796824922
AUROC: 0.8299275314055892
AUPRC: 0.6829031790762835
Sensitivity: 0.7592592592592593
Specificity: 0.7511436413540714
Threshold: 0.18
Accuracy:  0.7532839339845065

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0016.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.21it/s]
Loss: 0.5515081379562616
AUROC: 0.8383511700352926
AUPRC: 0.7035456146298069
Sensitivity: 0.754653130287648
Specificity: 0.7749648382559775
Threshold: 0.15
Accuracy:  0.7690014903129657

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.29it/s]
Loss: 0.5173992885554091
AUROC: 0.8290706767435637
AUPRC: 0.6802082175252061
Sensitivity: 0.7567049808429118
Specificity: 0.7536596523330283
Threshold: 0.14
Accuracy:  0.754462782081509

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0017.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.20it/s]
Loss: 0.5144467558711767
AUROC: 0.8381352019628702
AUPRC: 0.7042999014832655
Sensitivity: 0.7580372250423012
Specificity: 0.7609001406469761
Threshold: 0.21
Accuracy:  0.7600596125186289

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.24it/s]
Loss: 0.48662798423716364
AUROC: 0.8295368968204726
AUPRC: 0.6815027658691569
Sensitivity: 0.7624521072796935
Specificity: 0.7479414455626715
Threshold: 0.2
Accuracy:  0.7517682721455036

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0018.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.18it/s]
Loss: 0.5609271693974733
AUROC: 0.8373135713622766
AUPRC: 0.7036879085987435
Sensitivity: 0.754653130287648
Specificity: 0.7679324894514767
Threshold: 0.15
Accuracy:  0.764033780427223

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.28it/s]
Loss: 0.5265882614445179
AUROC: 0.8279100195251565
AUPRC: 0.6778254997412587
Sensitivity: 0.7528735632183908
Specificity: 0.7538883806038427
Threshold: 0.14
Accuracy:  0.7536207477265072

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0019.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.20it/s]
Loss: 0.5669558420777321
AUROC: 0.8362355158602669
AUPRC: 0.7030652196902551
Sensitivity: 0.766497461928934
Specificity: 0.750351617440225
Threshold: 0.14
Accuracy:  0.7550919026328863

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.25it/s]
Loss: 0.5309472328170817
AUROC: 0.826956839004509
AUPRC: 0.6770180891808357
Sensitivity: 0.7445721583652618
Specificity: 0.762580054894785
Threshold: 0.14
Accuracy:  0.7578309195015157

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0020.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.21it/s]
Loss: 0.5489818751811981
AUROC: 0.8400325082520033
AUPRC: 0.7051025583019696
Sensitivity: 0.7563451776649747
Specificity: 0.7672292545710268
Threshold: 0.16
Accuracy:  0.764033780427223

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.30it/s]
Loss: 0.5151952048565479
AUROC: 0.8300443785426592
AUPRC: 0.680143691166898
Sensitivity: 0.7541507024265645
Specificity: 0.7536596523330283
Threshold: 0.15
Accuracy:  0.7537891545975076

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0021.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.27it/s]
Loss: 0.5899212192744017
AUROC: 0.8362236167929158
AUPRC: 0.7035513671069669
Sensitivity: 0.7648054145516074
Specificity: 0.7517580872011251
Threshold: 0.12
Accuracy:  0.7555886736214605

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.21it/s]
Loss: 0.5536632598080533
AUROC: 0.8270219082539649
AUPRC: 0.6749148369954976
Sensitivity: 0.7413793103448276
Specificity: 0.7664684354986276
Threshold: 0.12
Accuracy:  0.7598518019535198

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0022.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.21it/s]
Loss: 0.5569353178143501
AUROC: 0.8356715000678248
AUPRC: 0.7025190872517596
Sensitivity: 0.754653130287648
Specificity: 0.7672292545710268
Threshold: 0.16
Accuracy:  0.7635370094386488

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.24it/s]
Loss: 0.5222832706380398
AUROC: 0.826889651900694
AUPRC: 0.6763132274376973
Sensitivity: 0.7509578544061303
Specificity: 0.7538883806038427
Threshold: 0.15
Accuracy:  0.7531155271135063

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0023.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.26it/s]
Loss: 0.5286445152014494
AUROC: 0.837802623030407
AUPRC: 0.7049459011124405
Sensitivity: 0.7563451776649747
Specificity: 0.7735583684950773
Threshold: 0.18
Accuracy:  0.7685047193243915

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.22it/s]
Loss: 0.4974364422737284
AUROC: 0.8292899111844911
AUPRC: 0.6790387435560589
Sensitivity: 0.7535121328224776
Specificity: 0.7554894784995425
Threshold: 0.17
Accuracy:  0.7549680026945099

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0024.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.24it/s]
Loss: 0.5278321541845798
AUROC: 0.8370779698287248
AUPRC: 0.7043450315238138
Sensitivity: 0.7681895093062606
Specificity: 0.750351617440225
Threshold: 0.17
Accuracy:  0.7555886736214605

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.16it/s]
Loss: 0.4982956888827872
AUROC: 0.8287205735091181
AUPRC: 0.67958699066151
Sensitivity: 0.7592592592592593
Specificity: 0.7438243366880146
Threshold: 0.16
Accuracy:  0.7478949141124958

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0025.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.29it/s]
Loss: 0.5922230258584023
AUROC: 0.83686259670967
AUPRC: 0.7034396961802216
Sensitivity: 0.7563451776649747
Specificity: 0.7665260196905767
Threshold: 0.12
Accuracy:  0.7635370094386488

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.23it/s]
Loss: 0.5550360841319916
AUROC: 0.8277807573797731
AUPRC: 0.6736241074268124
Sensitivity: 0.756066411238825
Specificity: 0.7497712717291857
Threshold: 0.11
Accuracy:  0.7514314584035029

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0026.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.22it/s]
Loss: 0.5509088579565287
AUROC: 0.8380227557764023
AUPRC: 0.7041397336832358
Sensitivity: 0.7580372250423012
Specificity: 0.7714486638537271
Threshold: 0.15
Accuracy:  0.767511177347243

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.21it/s]
Loss: 0.5177623981491049
AUROC: 0.8292479922740673
AUPRC: 0.676403765550866
Sensitivity: 0.7522349936143039
Specificity: 0.7566331198536139
Threshold: 0.14
Accuracy:  0.755473223307511

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0027.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.29it/s]
Loss: 0.5434242896735668
AUROC: 0.8383987663046971
AUPRC: 0.705072527633449
Sensitivity: 0.766497461928934
Specificity: 0.7531645569620253
Threshold: 0.16
Accuracy:  0.7570789865871833

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.20it/s]
Loss: 0.5078455098765962
AUROC: 0.829977191438844
AUPRC: 0.678992919987638
Sensitivity: 0.7630906768837803
Specificity: 0.7435956084172004
Threshold: 0.15
Accuracy:  0.7487369484674975

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0028.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.23it/s]
Loss: 0.529038617387414
AUROC: 0.8370862991758705
AUPRC: 0.7053817865658327
Sensitivity: 0.7529610829103215
Specificity: 0.7735583684950773
Threshold: 0.18
Accuracy:  0.767511177347243

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.17it/s]
Loss: 0.49773205119244596
AUROC: 0.8291122305066844
AUPRC: 0.6794322979501672
Sensitivity: 0.7490421455938697
Specificity: 0.7596065873741995
Threshold: 0.17
Accuracy:  0.7568204782755137

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0029.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.32it/s]
Loss: 0.5113429017364979
AUROC: 0.8412807204171336
AUPRC: 0.707847603119118
Sensitivity: 0.7563451776649747
Specificity: 0.7735583684950773
Threshold: 0.19
Accuracy:  0.7685047193243915

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.20it/s]
Loss: 0.48384131300956645
AUROC: 0.8325232905555965
AUPRC: 0.6836492652300621
Sensitivity: 0.7515964240102171
Specificity: 0.7589204025617566
Threshold: 0.18
Accuracy:  0.756988885146514

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0030.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.19it/s]
Loss: 0.5174967125058174
AUROC: 0.8367662142641261
AUPRC: 0.7047330254434505
Sensitivity: 0.7580372250423012
Specificity: 0.7658227848101266
Threshold: 0.18
Accuracy:  0.7635370094386488

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.18it/s]
Loss: 0.49117390906557123
AUROC: 0.8289568238143812
AUPRC: 0.6788224405929296
Sensitivity: 0.7528735632183908
Specificity: 0.7532021957913998
Threshold: 0.17
Accuracy:  0.7531155271135063

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0031.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.26it/s]
Loss: 0.4667794965207577
AUROC: 0.840471583837259
AUPRC: 0.7066437478366216
Sensitivity: 0.7631133671742809
Specificity: 0.7714486638537271
Threshold: 0.26
Accuracy:  0.7690014903129657

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.21it/s]
Loss: 0.4479020916401072
AUROC: 0.8321261563484803
AUPRC: 0.6832875191557315
Sensitivity: 0.7675606641123882
Specificity: 0.7454254345837146
Threshold: 0.25
Accuracy:  0.7512630515325025

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0032.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.22it/s]
Loss: 0.4943788591772318
AUROC: 0.8414425477331087
AUPRC: 0.7078455465825719
Sensitivity: 0.7631133671742809
Specificity: 0.7658227848101266
Threshold: 0.19
Accuracy:  0.7650273224043715

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.24it/s]
Loss: 0.4681993082482764
AUROC: 0.8335423436497669
AUPRC: 0.6827848605937791
Sensitivity: 0.7611749680715197
Specificity: 0.7532021957913998
Threshold: 0.18
Accuracy:  0.7553048164365106

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0033.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.26it/s]
Loss: 0.5368381571024656
AUROC: 0.8379573109059713
AUPRC: 0.7061502664664804
Sensitivity: 0.766497461928934
Specificity: 0.7573839662447257
Threshold: 0.15
Accuracy:  0.7600596125186289

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.19it/s]
Loss: 0.5052244885170714
AUROC: 0.8300177227895151
AUPRC: 0.6787983064758386
Sensitivity: 0.7586206896551724
Specificity: 0.7495425434583715
Threshold: 0.14
Accuracy:  0.7519366790165039

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0034.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.18it/s]
Loss: 0.5007133148610592
AUROC: 0.8362759726892606
AUPRC: 0.7042629683784553
Sensitivity: 0.754653130287648
Specificity: 0.7756680731364276
Threshold: 0.19
Accuracy:  0.76949826130154

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.20it/s]
Loss: 0.47483146919849073
AUROC: 0.8289503972218425
AUPRC: 0.6777735409710947
Sensitivity: 0.7484035759897829
Specificity: 0.7570905763952425
Threshold: 0.18
Accuracy:  0.7547995958235096

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0035.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.24it/s]
Loss: 0.5057026706635952
AUROC: 0.8416079447692889
AUPRC: 0.707017129834449
Sensitivity: 0.7563451776649747
Specificity: 0.7728551336146273
Threshold: 0.19
Accuracy:  0.7680079483358172

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.25it/s]
Loss: 0.47994595607544516
AUROC: 0.8331078913882493
AUPRC: 0.6833473854937191
Sensitivity: 0.7554278416347382
Specificity: 0.7577767612076852
Threshold: 0.18
Accuracy:  0.7571572920175144

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0036.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.13it/s]
Loss: 0.4931396506726742
AUROC: 0.8383737782632597
AUPRC: 0.7053046092851467
Sensitivity: 0.7563451776649747
Specificity: 0.7693389592123769
Threshold: 0.2
Accuracy:  0.7655240933929458

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.21it/s]
Loss: 0.46882090257837417
AUROC: 0.8307276421766753
AUPRC: 0.6803235181703249
Sensitivity: 0.7528735632183908
Specificity: 0.7564043915827996
Threshold: 0.19
Accuracy:  0.755473223307511

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0037.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.01it/s]
Loss: 0.5087632406502962
AUROC: 0.8408916209147527
AUPRC: 0.706324039451386
Sensitivity: 0.7563451776649747
Specificity: 0.7728551336146273
Threshold: 0.19
Accuracy:  0.7680079483358172

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:23<00:00,  1.98it/s]
Loss: 0.4827438437558235
AUROC: 0.8326464912557445
AUPRC: 0.6814326318954249
Sensitivity: 0.7541507024265645
Specificity: 0.7580054894784996
Threshold: 0.18
Accuracy:  0.756988885146514

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0038.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.11it/s]
Loss: 0.5102721024304628
AUROC: 0.8389020968536486
AUPRC: 0.7043228999730354
Sensitivity: 0.7495769881556683
Specificity: 0.770745428973277
Threshold: 0.18
Accuracy:  0.7645305514157973

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.20it/s]
Loss: 0.4828167196283949
AUROC: 0.8309850710255324
AUPRC: 0.6792540168447639
Sensitivity: 0.7484035759897829
Specificity: 0.7637236962488564
Threshold: 0.17
Accuracy:  0.7596833950825194

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0039.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.22it/s]
Loss: 0.51145307905972
AUROC: 0.8446600555448464
AUPRC: 0.7060059690133538
Sensitivity: 0.766497461928934
Specificity: 0.7587904360056259
Threshold: 0.18
Accuracy:  0.7610531544957775

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.25it/s]
Loss: 0.4866719318831221
AUROC: 0.8343734189121766
AUPRC: 0.6828558153401902
Sensitivity: 0.7630906768837803
Specificity: 0.7461116193961573
Threshold: 0.17
Accuracy:  0.7505894240485012

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0040.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.22it/s]
Loss: 0.5568958148360252
AUROC: 0.8409481414846706
AUPRC: 0.7062895138676671
Sensitivity: 0.7681895093062606
Specificity: 0.7566807313642757
Threshold: 0.13
Accuracy:  0.7600596125186289

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.21it/s]
Loss: 0.5232818177405824
AUROC: 0.8322585587606726
AUPRC: 0.6767819814223925
Sensitivity: 0.7509578544061303
Specificity: 0.7646386093321135
Threshold: 0.13
Accuracy:  0.7610306500505221

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0041.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.21it/s]
Loss: 0.47454866394400597
AUROC: 0.8451735003010464
AUPRC: 0.706938529404582
Sensitivity: 0.7631133671742809
Specificity: 0.7665260196905767
Threshold: 0.23
Accuracy:  0.7655240933929458

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.27it/s]
Loss: 0.45389061468712827
AUROC: 0.8356274808107789
AUPRC: 0.6854579013640169
Sensitivity: 0.7694763729246488
Specificity: 0.742451967063129
Threshold: 0.22
Accuracy:  0.7495789828224991

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0042.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.19it/s]
Loss: 0.5270088482648134
AUROC: 0.8401836264073622
AUPRC: 0.7069471455318364
Sensitivity: 0.7698815566835872
Specificity: 0.7545710267229254
Threshold: 0.14
Accuracy:  0.7590660705414803

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.22it/s]
Loss: 0.4973992198071581
AUROC: 0.8321046856870437
AUPRC: 0.679523636998028
Sensitivity: 0.7515964240102171
Specificity: 0.765096065873742
Threshold: 0.14
Accuracy:  0.761535870663523

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0043.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.15it/s]
Loss: 0.4525421503931284
AUROC: 0.8414937137227184
AUPRC: 0.7068199076487469
Sensitivity: 0.7698815566835872
Specificity: 0.7559774964838256
Threshold: 0.23
Accuracy:  0.7600596125186289

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.24it/s]
Loss: 0.4344532353446839
AUROC: 0.8324460253862089
AUPRC: 0.6818527141097007
Sensitivity: 0.7522349936143039
Specificity: 0.7618938700823422
Threshold: 0.23
Accuracy:  0.7593465813405187

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0044.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.19it/s]
Loss: 0.5499627366662025
AUROC: 0.8372017201291763
AUPRC: 0.7044620116355959
Sensitivity: 0.7563451776649747
Specificity: 0.770745428973277
Threshold: 0.13
Accuracy:  0.7665176353700944

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.19it/s]
Loss: 0.5179615179274945
AUROC: 0.8288886873275774
AUPRC: 0.6750064600921865
Sensitivity: 0.756066411238825
Specificity: 0.7566331198536139
Threshold: 0.12
Accuracy:  0.756483664533513

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0045.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.25it/s]
Loss: 0.5169166661798954
AUROC: 0.8441359016280304
AUPRC: 0.7097802450058748
Sensitivity: 0.7563451776649747
Specificity: 0.7693389592123769
Threshold: 0.16
Accuracy:  0.7655240933929458

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.23it/s]
Loss: 0.4844703065588119
AUROC: 0.8348711877160943
AUPRC: 0.6812145445740199
Sensitivity: 0.7579821200510856
Specificity: 0.7593778591033852
Threshold: 0.15
Accuracy:  0.759009767598518

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0046.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.12it/s]
Loss: 0.48261353000998497
AUROC: 0.8409987125209125
AUPRC: 0.7074200136219411
Sensitivity: 0.7732656514382402
Specificity: 0.7573839662447257
Threshold: 0.19
Accuracy:  0.762046696472926

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.18it/s]
Loss: 0.4586507348304099
AUROC: 0.8326833711333822
AUPRC: 0.6810010529754599
Sensitivity: 0.7650063856960408
Specificity: 0.7458828911253431
Threshold: 0.18
Accuracy:  0.7509262377905018

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0047.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.13it/s]
Loss: 0.4604575280100107
AUROC: 0.8473016484967908
AUPRC: 0.7117371748750112
Sensitivity: 0.7580372250423012
Specificity: 0.7756680731364276
Threshold: 0.25
Accuracy:  0.7704918032786885

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.23it/s]
Loss: 0.4411359765428178
AUROC: 0.8373163601182025
AUPRC: 0.6863448276941052
Sensitivity: 0.764367816091954
Specificity: 0.7461116193961573
Threshold: 0.24
Accuracy:  0.7509262377905018

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0048.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.03it/s]
Loss: 0.4730487447232008
AUROC: 0.8405465479615707
AUPRC: 0.7085991766109638
Sensitivity: 0.766497461928934
Specificity: 0.7609001406469761
Threshold: 0.22
Accuracy:  0.7625434674615003

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.23it/s]
Loss: 0.44904806132012226
AUROC: 0.8330732023944316
AUPRC: 0.6825045369235276
Sensitivity: 0.7471264367816092
Specificity: 0.7673833485818847
Threshold: 0.22
Accuracy:  0.7620410912765241

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0049.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.16it/s]
Loss: 0.4828792829066515
AUROC: 0.8402657299720848
AUPRC: 0.7088614785124479
Sensitivity: 0.7614213197969543
Specificity: 0.7651195499296765
Threshold: 0.2
Accuracy:  0.764033780427223

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.21it/s]
Loss: 0.4557192122682612
AUROC: 0.8324737765812631
AUPRC: 0.6814383832355333
Sensitivity: 0.7547892720306514
Specificity: 0.7532021957913998
Threshold: 0.19
Accuracy:  0.7536207477265072

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0050.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:08<00:00,  1.97it/s]
Loss: 0.471334308385849
AUROC: 0.8435831899495717
AUPRC: 0.7122363420715884
Sensitivity: 0.7648054145516074
Specificity: 0.7644163150492265
Threshold: 0.21
Accuracy:  0.7645305514157973

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.21it/s]
Loss: 0.44617258297636153
AUROC: 0.8354310315615802
AUPRC: 0.685101168616773
Sensitivity: 0.7586206896551724
Specificity: 0.7518298261665142
Threshold: 0.2
Accuracy:  0.7536207477265072

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0051.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.16it/s]
Loss: 0.4784076642245054
AUROC: 0.8394530236720047
AUPRC: 0.7062801762608599
Sensitivity: 0.7580372250423012
Specificity: 0.770042194092827
Threshold: 0.18
Accuracy:  0.7665176353700944

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.27it/s]
Loss: 0.45373937455897634
AUROC: 0.8322850684548954
AUPRC: 0.6792813536804425
Sensitivity: 0.7496807151979565
Specificity: 0.7614364135407137
Threshold: 0.17
Accuracy:  0.7583361401145167

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0052.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.15it/s]
Loss: 0.45720743760466576
AUROC: 0.8475158317091107
AUPRC: 0.7124248964714939
Sensitivity: 0.7783417935702199
Specificity: 0.7412095639943741
Threshold: 0.23
Accuracy:  0.7521112767014406

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.21it/s]
Loss: 0.4385895418359878
AUROC: 0.836592638162976
AUPRC: 0.6872916678740905
Sensitivity: 0.7586206896551724
Specificity: 0.755946935041171
Threshold: 0.23
Accuracy:  0.7566520714045133

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0053.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.15it/s]
Loss: 0.5472350548952818
AUROC: 0.8495791299877916
AUPRC: 0.7166433659340787
Sensitivity: 0.7563451776649747
Specificity: 0.7756680731364276
Threshold: 0.13
Accuracy:  0.7699950322901142

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.23it/s]
Loss: 0.5119079468732185
AUROC: 0.8387640961464982
AUPRC: 0.6833913759139727
Sensitivity: 0.7586206896551724
Specificity: 0.7596065873741995
Threshold: 0.12
Accuracy:  0.7593465813405187

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0054.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.21it/s]
Loss: 0.4810755606740713
AUROC: 0.8453454418242697
AUPRC: 0.7132971392867204
Sensitivity: 0.7732656514382402
Specificity: 0.7573839662447257
Threshold: 0.2
Accuracy:  0.762046696472926

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.19it/s]
Loss: 0.4547376055666741
AUROC: 0.835682983200887
AUPRC: 0.6849661946549056
Sensitivity: 0.7515964240102171
Specificity: 0.7614364135407137
Threshold: 0.2
Accuracy:  0.7588413607275177

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0055.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.18it/s]
Loss: 0.4821940064430237
AUROC: 0.8424753867791843
AUPRC: 0.7093415133197772
Sensitivity: 0.7614213197969543
Specificity: 0.7616033755274262
Threshold: 0.17
Accuracy:  0.7615499254843517

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.24it/s]
Loss: 0.4558968829347732
AUROC: 0.8337677125653906
AUPRC: 0.6825451143121855
Sensitivity: 0.7592592592592593
Specificity: 0.755946935041171
Threshold: 0.16
Accuracy:  0.7568204782755137

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0056.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.14it/s]
Loss: 0.48570406809449196
AUROC: 0.8463080763729738
AUPRC: 0.7133965529379427
Sensitivity: 0.7597292724196277
Specificity: 0.7658227848101266
Threshold: 0.19
Accuracy:  0.764033780427223

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.22it/s]
Loss: 0.45936237941396996
AUROC: 0.8368047157167579
AUPRC: 0.6851005182051646
Sensitivity: 0.7579821200510856
Specificity: 0.7520585544373285
Threshold: 0.18
Accuracy:  0.7536207477265072

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0057.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.21it/s]
Loss: 0.45172070153057575
AUROC: 0.8451645760005331
AUPRC: 0.7113641334664137
Sensitivity: 0.7631133671742809
Specificity: 0.7672292545710268
Threshold: 0.24
Accuracy:  0.7660208643815202

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.22it/s]
Loss: 0.4319499280858547
AUROC: 0.8350885233910442
AUPRC: 0.6822426972803959
Sensitivity: 0.7618135376756067
Specificity: 0.7463403476669717
Threshold: 0.23
Accuracy:  0.7504210171775009

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0058.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.17it/s]
Loss: 0.48755757696926594
AUROC: 0.8502776052413011
AUPRC: 0.7167394265225016
Sensitivity: 0.7631133671742809
Specificity: 0.7665260196905767
Threshold: 0.19
Accuracy:  0.7655240933929458

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.21it/s]
Loss: 0.4640725977877353
AUROC: 0.8390852797145191
AUPRC: 0.6848662469097493
Sensitivity: 0.7630906768837803
Specificity: 0.7504574565416285
Threshold: 0.18
Accuracy:  0.7537891545975076

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0059.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.16it/s]
Loss: 0.5360716823488474
AUROC: 0.8412009966658813
AUPRC: 0.7086687037684503
Sensitivity: 0.7648054145516074
Specificity: 0.7609001406469761
Threshold: 0.11
Accuracy:  0.762046696472926

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.25it/s]
Loss: 0.5039782222915203
AUROC: 0.8324821749692399
AUPRC: 0.6779468402974616
Sensitivity: 0.768837803320562
Specificity: 0.7486276303751144
Threshold: 0.1
Accuracy:  0.7539575614685079

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0060.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.21it/s]
Loss: 0.49643743224442005
AUROC: 0.8424468290175415
AUPRC: 0.7102609910117255
Sensitivity: 0.754653130287648
Specificity: 0.7658227848101266
Threshold: 0.16
Accuracy:  0.7625434674615003

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.23it/s]
Loss: 0.46979530282477117
AUROC: 0.834157982003204
AUPRC: 0.6814745659747847
Sensitivity: 0.7522349936143039
Specificity: 0.7596065873741995
Threshold: 0.15
Accuracy:  0.7576625126305153

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0061.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.21it/s]
Loss: 0.5190190654247999
AUROC: 0.8441876625710076
AUPRC: 0.7118125945315883
Sensitivity: 0.7597292724196277
Specificity: 0.7665260196905767
Threshold: 0.15
Accuracy:  0.7645305514157973

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.23it/s]
Loss: 0.4880014138018831
AUROC: 0.8356508502381929
AUPRC: 0.6823254483609452
Sensitivity: 0.7547892720306514
Specificity: 0.757548032936871
Threshold: 0.14
Accuracy:  0.7568204782755137

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0062.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.20it/s]
Loss: 0.4781603328883648
AUROC: 0.8430893786545011
AUPRC: 0.7116401273556726
Sensitivity: 0.7698815566835872
Specificity: 0.760196905766526
Threshold: 0.19
Accuracy:  0.7630402384500745

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.20it/s]
Loss: 0.4543687726588959
AUROC: 0.8336548090191968
AUPRC: 0.6802471153949194
Sensitivity: 0.7567049808429118
Specificity: 0.7548032936870998
Threshold: 0.18
Accuracy:  0.7553048164365106

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0063.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.15it/s]
Loss: 0.4960012212395668
AUROC: 0.8469613351705494
AUPRC: 0.7147103978310126
Sensitivity: 0.7580372250423012
Specificity: 0.7637130801687764
Threshold: 0.16
Accuracy:  0.762046696472926

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.21it/s]
Loss: 0.46818530718062784
AUROC: 0.837537347266186
AUPRC: 0.6866299170963887
Sensitivity: 0.7618135376756067
Specificity: 0.7568618481244281
Threshold: 0.15
Accuracy:  0.7581677332435164

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0064.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.21it/s]
Loss: 0.4756312072277069
AUROC: 0.8467126446629113
AUPRC: 0.7124229568712505
Sensitivity: 0.7715736040609137
Specificity: 0.759493670886076
Threshold: 0.2
Accuracy:  0.7630402384500745

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.21it/s]
Loss: 0.45304553686304294
AUROC: 0.8366469720817135
AUPRC: 0.6830233722747971
Sensitivity: 0.7509578544061303
Specificity: 0.7616651418115279
Threshold: 0.2
Accuracy:  0.7588413607275177

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0065.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.10it/s]
Loss: 0.47635688073933125
AUROC: 0.8457071734717434
AUPRC: 0.7131161042466785
Sensitivity: 0.7597292724196277
Specificity: 0.7672292545710268
Threshold: 0.21
Accuracy:  0.7650273224043715

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.26it/s]
Loss: 0.4523143213480077
AUROC: 0.8357557935731739
AUPRC: 0.6837495521911899
Sensitivity: 0.7420178799489144
Specificity: 0.7687557182067704
Threshold: 0.21
Accuracy:  0.7617042775345234

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0066.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.20it/s]
Loss: 0.5905215982347727
AUROC: 0.8418685343442781
AUPRC: 0.7113133527368695
Sensitivity: 0.7817258883248731
Specificity: 0.7482419127988749
Threshold: 0.07
Accuracy:  0.7580725285643318

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.16it/s]
Loss: 0.550355483559852
AUROC: 0.8337793972790974
AUPRC: 0.6810840347944982
Sensitivity: 0.7637292464878672
Specificity: 0.7564043915827996
Threshold: 0.07
Accuracy:  0.7583361401145167

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0067.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.20it/s]
Loss: 0.47282436676323414
AUROC: 0.8519101572818722
AUPRC: 0.7172006600010056
Sensitivity: 0.7529610829103215
Specificity: 0.7784810126582279
Threshold: 0.22
Accuracy:  0.7709885742672627

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.23it/s]
Loss: 0.45535579767632994
AUROC: 0.8375836479442499
AUPRC: 0.6856718645263399
Sensitivity: 0.7522349936143039
Specificity: 0.7593778591033852
Threshold: 0.21
Accuracy:  0.757494105759515

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0068.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.30it/s]
Loss: 0.48108252324163914
AUROC: 0.8479489577606908
AUPRC: 0.7138463133049372
Sensitivity: 0.7817258883248731
Specificity: 0.7454289732770746
Threshold: 0.22
Accuracy:  0.7560854446100348

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.37it/s]
Loss: 0.45895776279429173
AUROC: 0.8378751815512392
AUPRC: 0.6834476822560893
Sensitivity: 0.7650063856960408
Specificity: 0.7465690759377859
Threshold: 0.22
Accuracy:  0.7514314584035029

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0069.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.35it/s]
Loss: 0.5323404297232628
AUROC: 0.8420113231524913
AUPRC: 0.7104989744802356
Sensitivity: 0.766497461928934
Specificity: 0.7573839662447257
Threshold: 0.1
Accuracy:  0.7600596125186289

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.44it/s]
Loss: 0.5001123756804364
AUROC: 0.8337926886409393
AUPRC: 0.6802075391552231
Sensitivity: 0.7490421455938697
Specificity: 0.7648673376029277
Threshold: 0.1
Accuracy:  0.7606938363085214

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0070.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.36it/s]
Loss: 0.5431072041392326
AUROC: 0.8509820300284864
AUPRC: 0.7172835315244857
Sensitivity: 0.7631133671742809
Specificity: 0.770042194092827
Threshold: 0.11
Accuracy:  0.7680079483358172

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.45it/s]
Loss: 0.513208713937313
AUROC: 0.8384709558913742
AUPRC: 0.683825399312774
Sensitivity: 0.7567049808429118
Specificity: 0.7632662397072278
Threshold: 0.1
Accuracy:  0.761535870663523

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0071.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.35it/s]
Loss: 0.5701420698314905
AUROC: 0.8378216615381686
AUPRC: 0.7063260769846404
Sensitivity: 0.7495769881556683
Specificity: 0.7805907172995781
Threshold: 0.1
Accuracy:  0.771485345255837

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.45it/s]
Loss: 0.5253682250672198
AUROC: 0.8310808126484688
AUPRC: 0.6770291427869518
Sensitivity: 0.7567049808429118
Specificity: 0.7506861848124429
Threshold: 0.09
Accuracy:  0.7522734927585045

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0072.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.39it/s]
Loss: 0.5341992788016796
AUROC: 0.8424135116289585
AUPRC: 0.7119546898416288
Sensitivity: 0.7715736040609137
Specificity: 0.7566807313642757
Threshold: 0.1
Accuracy:  0.7610531544957775

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.44it/s]
Loss: 0.4993406930502425
AUROC: 0.8343306236482246
AUPRC: 0.6836402453434122
Sensitivity: 0.7535121328224776
Specificity: 0.7630375114364135
Threshold: 0.1
Accuracy:  0.7605254294375211

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0073.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.40it/s]
Loss: 0.4698685295879841
AUROC: 0.8424527785512171
AUPRC: 0.7109047756425803
Sensitivity: 0.7698815566835872
Specificity: 0.7566807313642757
Threshold: 0.18
Accuracy:  0.7605563835072032

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.41it/s]
Loss: 0.44675456938591407
AUROC: 0.8338591454501477
AUPRC: 0.682241935186977
Sensitivity: 0.7586206896551724
Specificity: 0.7488563586459286
Threshold: 0.17
Accuracy:  0.7514314584035029

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0074.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.40it/s]
Loss: 0.4652808215469122
AUROC: 0.8456798056168359
AUPRC: 0.7112504166077378
Sensitivity: 0.7681895093062606
Specificity: 0.7566807313642757
Threshold: 0.18
Accuracy:  0.7600596125186289

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.36it/s]
Loss: 0.44570589509416136
AUROC: 0.8360913639449464
AUPRC: 0.6852415494523671
Sensitivity: 0.7637292464878672
Specificity: 0.7538883806038427
Threshold: 0.17
Accuracy:  0.756483664533513

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0075.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.37it/s]
Loss: 0.4738118201494217
AUROC: 0.845573903917411
AUPRC: 0.7124574639766131
Sensitivity: 0.7580372250423012
Specificity: 0.7672292545710268
Threshold: 0.23
Accuracy:  0.7645305514157973

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.36it/s]
Loss: 0.44984850033800655
AUROC: 0.8354507495159608
AUPRC: 0.6823068295088507
Sensitivity: 0.7541507024265645
Specificity: 0.7541171088746569
Threshold: 0.22
Accuracy:  0.7541259683395083

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0076.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.42it/s]
Loss: 0.4755707960575819
AUROC: 0.8488235392109967
AUPRC: 0.7148186086208765
Sensitivity: 0.7631133671742809
Specificity: 0.7623066104078763
Threshold: 0.21
Accuracy:  0.7625434674615003

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.40it/s]
Loss: 0.45095487034067194
AUROC: 0.8388122955905395
AUPRC: 0.6833053998758256
Sensitivity: 0.743933588761175
Specificity: 0.7680695333943275
Threshold: 0.21
Accuracy:  0.7617042775345234

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0077.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.40it/s]
Loss: 0.5691015366464853
AUROC: 0.8451027008503074
AUPRC: 0.7135375012003728
Sensitivity: 0.7698815566835872
Specificity: 0.7559774964838256
Threshold: 0.09
Accuracy:  0.7600596125186289

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.39it/s]
Loss: 0.5329689802007472
AUROC: 0.8343215679951018
AUPRC: 0.6800478061675206
Sensitivity: 0.7573435504469987
Specificity: 0.7607502287282708
Threshold: 0.09
Accuracy:  0.7598518019535198


Plot AUROC/AUPRC for Each Intermediate Model
  Epoch with best Validation Loss:      57, 0.4502
  Epoch with best model Test AUROC:     58, 0.8391
  Epoch with best model Test Accuracy:   3, 0.7678

AUROC/AUPRC Plots - Best Model Based on Validation Loss
  Epoch with best Validation Loss:   57, 0.4502
  Best Model Based on Validation Loss:
    ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0057.model

Generate Stats Based on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.34it/s]
Loss: 0.4319499280858547
AUROC: 0.8350885233910442
AUPRC: 0.6822426972803959
Sensitivity: 0.7618135376756067
Specificity: 0.7463403476669717
Threshold: 0.23
Accuracy:  0.7504210171775009
best_model_val_test_auroc: 0.8350885233910442
best_model_val_test_auprc: 0.6822426972803959

AUROC/AUPRC Plots - Best Model Based on Model AUROC
  Epoch with best model Test AUROC:  58, 0.8391
  Best Model Based on Model AUROC:
    ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_4c033450_0058.model

Generate Stats Based on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.34it/s]
Loss: 0.4640725977877353
AUROC: 0.8390852797145191
AUPRC: 0.6848662469097493
Sensitivity: 0.7630906768837803
Specificity: 0.7504574565416285
Threshold: 0.18
Accuracy:  0.7537891545975076
best_model_auroc_test_auroc: 0.8390852797145191
best_model_auroc_test_auprc: 0.6848662469097493

Total Processing Time: 7480.9470 sec
In [104]:
RUN_ME = True

if MULTI_RUN and RUN_ME:
    run_experiment(
        experimentNamePrefix=None, 
        useAbp=True, 
        useEeg=True, 
        useEcg=False,
        nResiduals=12, 
        skip_connection=False,
        batch_size=128,
        learning_rate=1e-4,
        weight_decay=1e-1,
        balance_labels=False,
        #pos_weight=2.0,
        pos_weight=None,
        max_epochs=200,
        patience=20,
        device=device
    )
Experiment Setup
  name:              ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf
  prediction_window: 003
  max_cases:         _ALL
  use_abp:           True
  use_eeg:           True
  use_ecg:           False
  n_residuals:       12
  skip_connection:   False
  batch_size:        128
  learning_rate:     0.0001
  weight_decay:      0.1
  balance_labels:    False
  max_epochs:        200
  patience:          20
  device:            mps

Model Architecture
HypotensionCNN(
  (abpResiduals): Sequential(
    (0): ResidualBlock(
      (bn1): BatchNorm1d(1, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (1): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (2): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (3): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (4): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (5): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (6): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (7): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (8): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=1, dilation=1, ceil_mode=False)
    )
    (9): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (10): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (11): ResidualBlock(
      (bn1): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
  )
  (abpFc): Linear(in_features=2814, out_features=32, bias=True)
  (eegResiduals): Sequential(
    (0): ResidualBlock(
      (bn1): BatchNorm1d(1, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(1, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(1, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (1): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (2): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (3): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (4): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (5): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(2, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (6): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (7): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
    )
    (8): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (9): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
    )
    (10): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(4, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (11): ResidualBlock(
      (bn1): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(6, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(6, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
    )
  )
  (eegFc): Linear(in_features=720, out_features=32, bias=True)
  (fullLinear1): Linear(in_features=64, out_features=16, bias=True)
  (fullLinear2): Linear(in_features=16, out_features=1, bias=True)
  (sigmoid): Sigmoid()
)

Training Loop
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:49<00:00,  1.86it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.42it/s]
[2024-05-04 18:04:31.643778] Completed epoch 0 with training loss 0.51595116, validation loss 0.56931031
Validation loss improved to 0.56931031. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:53<00:00,  1.73it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.33it/s]
[2024-05-04 18:05:31.860649] Completed epoch 1 with training loss 0.43843874, validation loss 0.60139990
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:50<00:00,  1.83it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.38it/s]
[2024-05-04 18:06:28.956238] Completed epoch 2 with training loss 0.43609357, validation loss 0.62353420
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:50<00:00,  1.82it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.42it/s]
[2024-05-04 18:07:26.157662] Completed epoch 3 with training loss 0.43331760, validation loss 0.61659265
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:50<00:00,  1.83it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.43it/s]
[2024-05-04 18:08:23.383629] Completed epoch 4 with training loss 0.43372226, validation loss 0.60641098
No improvement in validation loss. 4 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:50<00:00,  1.83it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.36it/s]
[2024-05-04 18:09:20.379239] Completed epoch 5 with training loss 0.43268588, validation loss 0.65770650
No improvement in validation loss. 5 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:50<00:00,  1.82it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.46it/s]
[2024-05-04 18:10:17.439055] Completed epoch 6 with training loss 0.43122524, validation loss 0.62906861
No improvement in validation loss. 6 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:51<00:00,  1.79it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.41it/s]
[2024-05-04 18:11:15.658110] Completed epoch 7 with training loss 0.43106535, validation loss 0.61194301
No improvement in validation loss. 7 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:51<00:00,  1.77it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.39it/s]
[2024-05-04 18:12:14.419454] Completed epoch 8 with training loss 0.43007794, validation loss 0.63638359
No improvement in validation loss. 8 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:49<00:00,  1.84it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
[2024-05-04 18:13:10.867988] Completed epoch 9 with training loss 0.43108729, validation loss 0.60573643
No improvement in validation loss. 9 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:50<00:00,  1.81it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.37it/s]
[2024-05-04 18:14:08.465541] Completed epoch 10 with training loss 0.42950326, validation loss 0.58465004
No improvement in validation loss. 10 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:50<00:00,  1.83it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.44it/s]
[2024-05-04 18:15:05.290335] Completed epoch 11 with training loss 0.43027970, validation loss 0.56708413
Validation loss improved to 0.56708413. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:51<00:00,  1.77it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.26it/s]
[2024-05-04 18:16:04.419313] Completed epoch 12 with training loss 0.43070278, validation loss 0.57278872
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:50<00:00,  1.82it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.37it/s]
[2024-05-04 18:17:01.815053] Completed epoch 13 with training loss 0.43025759, validation loss 0.54181939
Validation loss improved to 0.54181939. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:50<00:00,  1.81it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.41it/s]
[2024-05-04 18:17:59.529098] Completed epoch 14 with training loss 0.42799452, validation loss 0.57969230
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:50<00:00,  1.84it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.45it/s]
[2024-05-04 18:18:56.127006] Completed epoch 15 with training loss 0.42701909, validation loss 0.59153694
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:50<00:00,  1.82it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.41it/s]
[2024-05-04 18:19:53.348460] Completed epoch 16 with training loss 0.42744860, validation loss 0.55291092
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:50<00:00,  1.81it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.42it/s]
[2024-05-04 18:20:50.866410] Completed epoch 17 with training loss 0.42606500, validation loss 0.57097864
No improvement in validation loss. 4 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:50<00:00,  1.81it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.39it/s]
[2024-05-04 18:21:48.379196] Completed epoch 18 with training loss 0.42602563, validation loss 0.52668321
Validation loss improved to 0.52668321. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:50<00:00,  1.84it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.42it/s]
[2024-05-04 18:22:45.156483] Completed epoch 19 with training loss 0.42469531, validation loss 0.58484495
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:48<00:00,  1.90it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.56it/s]
[2024-05-04 18:23:39.956734] Completed epoch 20 with training loss 0.42607340, validation loss 0.54882979
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.94it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.51it/s]
[2024-05-04 18:24:33.903568] Completed epoch 21 with training loss 0.42568558, validation loss 0.59217632
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.93it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
[2024-05-04 18:25:28.067117] Completed epoch 22 with training loss 0.42476907, validation loss 0.57318640
No improvement in validation loss. 4 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.92it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.52it/s]
[2024-05-04 18:26:22.473222] Completed epoch 23 with training loss 0.42451999, validation loss 0.53387308
No improvement in validation loss. 5 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.94it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
[2024-05-04 18:27:16.290411] Completed epoch 24 with training loss 0.42503154, validation loss 0.55703801
No improvement in validation loss. 6 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.93it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
[2024-05-04 18:28:10.353191] Completed epoch 25 with training loss 0.42453563, validation loss 0.59438860
No improvement in validation loss. 7 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.95it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.55it/s]
[2024-05-04 18:29:03.771840] Completed epoch 26 with training loss 0.42486233, validation loss 0.51528668
Validation loss improved to 0.51528668. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.97it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.54it/s]
[2024-05-04 18:29:56.890277] Completed epoch 27 with training loss 0.42520767, validation loss 0.51663387
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.97it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.60it/s]
[2024-05-04 18:30:49.744407] Completed epoch 28 with training loss 0.42406601, validation loss 0.54655039
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.96it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.44it/s]
[2024-05-04 18:31:43.290297] Completed epoch 29 with training loss 0.42302650, validation loss 0.57752097
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:48<00:00,  1.90it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.43it/s]
[2024-05-04 18:32:38.458545] Completed epoch 30 with training loss 0.42454436, validation loss 0.49015594
Validation loss improved to 0.49015594. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.93it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.44it/s]
[2024-05-04 18:33:32.883823] Completed epoch 31 with training loss 0.42436409, validation loss 0.57839531
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.93it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.57it/s]
[2024-05-04 18:34:26.749596] Completed epoch 32 with training loss 0.42358524, validation loss 0.50428909
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.96it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
[2024-05-04 18:35:20.245188] Completed epoch 33 with training loss 0.42259362, validation loss 0.59037876
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.95it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.46it/s]
[2024-05-04 18:36:14.101398] Completed epoch 34 with training loss 0.42181462, validation loss 0.54059255
No improvement in validation loss. 4 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.95it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.58it/s]
[2024-05-04 18:37:07.430414] Completed epoch 35 with training loss 0.42225298, validation loss 0.52900124
No improvement in validation loss. 5 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.95it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.51it/s]
[2024-05-04 18:38:01.033546] Completed epoch 36 with training loss 0.42145520, validation loss 0.57940173
No improvement in validation loss. 6 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.95it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
[2024-05-04 18:38:54.604589] Completed epoch 37 with training loss 0.42236859, validation loss 0.56908274
No improvement in validation loss. 7 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.92it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
[2024-05-04 18:39:48.803529] Completed epoch 38 with training loss 0.42181820, validation loss 0.53576177
No improvement in validation loss. 8 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.95it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.56it/s]
[2024-05-04 18:40:42.258489] Completed epoch 39 with training loss 0.42203423, validation loss 0.51221544
No improvement in validation loss. 9 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.96it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
[2024-05-04 18:41:35.684789] Completed epoch 40 with training loss 0.42219472, validation loss 0.46963444
Validation loss improved to 0.46963444. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.96it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.56it/s]
[2024-05-04 18:42:29.060611] Completed epoch 41 with training loss 0.42003015, validation loss 0.48398554
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.96it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
[2024-05-04 18:43:22.378921] Completed epoch 42 with training loss 0.41966355, validation loss 0.49232799
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.96it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.55it/s]
[2024-05-04 18:44:15.734632] Completed epoch 43 with training loss 0.42181376, validation loss 0.53230447
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.93it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.54it/s]
[2024-05-04 18:45:09.677094] Completed epoch 44 with training loss 0.42194515, validation loss 0.45329744
Validation loss improved to 0.45329744. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.94it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.57it/s]
[2024-05-04 18:46:03.410049] Completed epoch 45 with training loss 0.42120850, validation loss 0.54861248
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.94it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.57it/s]
[2024-05-04 18:46:57.035810] Completed epoch 46 with training loss 0.42263335, validation loss 0.51326239
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.94it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.57it/s]
[2024-05-04 18:47:50.718549] Completed epoch 47 with training loss 0.42148992, validation loss 0.53479350
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.96it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.57it/s]
[2024-05-04 18:48:44.010847] Completed epoch 48 with training loss 0.42092597, validation loss 0.47474155
No improvement in validation loss. 4 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.94it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.44it/s]
[2024-05-04 18:49:38.139670] Completed epoch 49 with training loss 0.42143899, validation loss 0.47249156
No improvement in validation loss. 5 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.94it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.56it/s]
[2024-05-04 18:50:31.903086] Completed epoch 50 with training loss 0.42164072, validation loss 0.53381157
No improvement in validation loss. 6 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.95it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.54it/s]
[2024-05-04 18:51:25.353989] Completed epoch 51 with training loss 0.42159906, validation loss 0.54176635
No improvement in validation loss. 7 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.95it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.57it/s]
[2024-05-04 18:52:18.746284] Completed epoch 52 with training loss 0.42257455, validation loss 0.51746082
No improvement in validation loss. 8 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.93it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.56it/s]
[2024-05-04 18:53:12.622326] Completed epoch 53 with training loss 0.42049068, validation loss 0.53001648
No improvement in validation loss. 9 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.94it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
[2024-05-04 18:54:06.478441] Completed epoch 54 with training loss 0.42181039, validation loss 0.45325842
Validation loss improved to 0.45325842. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.94it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.57it/s]
[2024-05-04 18:55:00.265397] Completed epoch 55 with training loss 0.42164376, validation loss 0.57029819
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.95it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.59it/s]
[2024-05-04 18:55:53.760463] Completed epoch 56 with training loss 0.42031488, validation loss 0.51655996
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.95it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.59it/s]
[2024-05-04 18:56:47.227675] Completed epoch 57 with training loss 0.42225093, validation loss 0.49591711
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.96it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
[2024-05-04 18:57:40.648389] Completed epoch 58 with training loss 0.42170620, validation loss 0.48164955
No improvement in validation loss. 4 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.96it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.55it/s]
[2024-05-04 18:58:33.940252] Completed epoch 59 with training loss 0.42004269, validation loss 0.47596535
No improvement in validation loss. 5 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.94it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.57it/s]
[2024-05-04 18:59:27.666827] Completed epoch 60 with training loss 0.42040497, validation loss 0.51318717
No improvement in validation loss. 6 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.93it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.57it/s]
[2024-05-04 19:00:21.558182] Completed epoch 61 with training loss 0.41973880, validation loss 0.49069160
No improvement in validation loss. 7 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.95it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.56it/s]
[2024-05-04 19:01:14.961703] Completed epoch 62 with training loss 0.42106366, validation loss 0.52864349
No improvement in validation loss. 8 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.92it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
[2024-05-04 19:02:09.345724] Completed epoch 63 with training loss 0.42160264, validation loss 0.44357079
Validation loss improved to 0.44357079. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.92it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
[2024-05-04 19:03:03.748402] Completed epoch 64 with training loss 0.42081249, validation loss 0.53073198
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:48<00:00,  1.91it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.54it/s]
[2024-05-04 19:03:58.381517] Completed epoch 65 with training loss 0.41988561, validation loss 0.58588374
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:48<00:00,  1.89it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.55it/s]
[2024-05-04 19:04:53.310604] Completed epoch 66 with training loss 0.42057878, validation loss 0.52499807
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.94it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
[2024-05-04 19:05:47.355501] Completed epoch 67 with training loss 0.41987294, validation loss 0.49401334
No improvement in validation loss. 4 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.93it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.57it/s]
[2024-05-04 19:06:41.359582] Completed epoch 68 with training loss 0.42067686, validation loss 0.50302166
No improvement in validation loss. 5 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.93it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
[2024-05-04 19:07:35.397011] Completed epoch 69 with training loss 0.42096707, validation loss 0.52191389
No improvement in validation loss. 6 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.92it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.52it/s]
[2024-05-04 19:08:29.705471] Completed epoch 70 with training loss 0.41917163, validation loss 0.49777734
No improvement in validation loss. 7 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.92it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
[2024-05-04 19:09:24.078920] Completed epoch 71 with training loss 0.41946366, validation loss 0.51195359
No improvement in validation loss. 8 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:48<00:00,  1.91it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.44it/s]
[2024-05-04 19:10:18.961214] Completed epoch 72 with training loss 0.42040291, validation loss 0.50527328
No improvement in validation loss. 9 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.93it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
[2024-05-04 19:11:13.160026] Completed epoch 73 with training loss 0.42088583, validation loss 0.59768224
No improvement in validation loss. 10 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:48<00:00,  1.90it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
[2024-05-04 19:12:07.996141] Completed epoch 74 with training loss 0.42045030, validation loss 0.46439660
No improvement in validation loss. 11 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:48<00:00,  1.91it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
[2024-05-04 19:13:02.675359] Completed epoch 75 with training loss 0.41954547, validation loss 0.45361674
No improvement in validation loss. 12 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.93it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.42it/s]
[2024-05-04 19:13:57.067149] Completed epoch 76 with training loss 0.41994423, validation loss 0.51297325
No improvement in validation loss. 13 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.94it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.52it/s]
[2024-05-04 19:14:50.809645] Completed epoch 77 with training loss 0.42070636, validation loss 0.50125468
No improvement in validation loss. 14 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:48<00:00,  1.90it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
[2024-05-04 19:15:45.685336] Completed epoch 78 with training loss 0.41929221, validation loss 0.59408891
No improvement in validation loss. 15 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:48<00:00,  1.90it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.52it/s]
[2024-05-04 19:16:40.544525] Completed epoch 79 with training loss 0.42094189, validation loss 0.54114735
No improvement in validation loss. 16 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:48<00:00,  1.91it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
[2024-05-04 19:17:35.293545] Completed epoch 80 with training loss 0.42061129, validation loss 0.47463658
No improvement in validation loss. 17 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:48<00:00,  1.91it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
[2024-05-04 19:18:29.746846] Completed epoch 81 with training loss 0.41838828, validation loss 0.46942925
No improvement in validation loss. 18 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.92it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.55it/s]
[2024-05-04 19:19:23.902594] Completed epoch 82 with training loss 0.42085540, validation loss 0.50348347
No improvement in validation loss. 19 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.93it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.52it/s]
[2024-05-04 19:20:18.020196] Completed epoch 83 with training loss 0.42099604, validation loss 0.47398388
No improvement in validation loss. 20 epochs without improvement.
Early stopping due to no improvement in validation loss.

Plot Validation and Loss Values from Training
  Epoch with best Validation Loss:   63, 0.4436
Generate AUROC/AUPRC for Each Intermediate Model

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0000.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:05<00:00,  2.90it/s]
Loss: 0.568305591121316
AUROC: 0.8403287950290457
AUPRC: 0.6933232421220822
Sensitivity: 0.7834179357021996
Specificity: 0.7482419127988749
Threshold: 0.18
Accuracy:  0.7585692995529061

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.48it/s]
Loss: 0.5324751224289549
AUROC: 0.8249602865792884
AUPRC: 0.6644485161598012
Sensitivity: 0.7452107279693486
Specificity: 0.760064043915828
Threshold: 0.18
Accuracy:  0.7561468507915123

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0001.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.42it/s]
Loss: 0.598136231303215
AUROC: 0.8424670574320385
AUPRC: 0.7033561679704929
Sensitivity: 0.7817258883248731
Specificity: 0.7609001406469761
Threshold: 0.14
Accuracy:  0.7670144063586687

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.49it/s]
Loss: 0.557079959422984
AUROC: 0.8300337892708622
AUPRC: 0.678740238544247
Sensitivity: 0.7362707535121328
Specificity: 0.7717291857273559
Threshold: 0.14
Accuracy:  0.7623779050185248

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0002.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.39it/s]
Loss: 0.6243866719305515
AUROC: 0.8417888105930258
AUPRC: 0.7057636066150065
Sensitivity: 0.766497461928934
Specificity: 0.7686357243319268
Threshold: 0.12
Accuracy:  0.7680079483358172

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.43it/s]
Loss: 0.5776393312088987
AUROC: 0.8309683472790391
AUPRC: 0.6820153056222417
Sensitivity: 0.7349936143039592
Specificity: 0.7779048490393413
Threshold: 0.12
Accuracy:  0.7665880767935331

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0003.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.32it/s]
Loss: 0.6148738004267216
AUROC: 0.8415317907382419
AUPRC: 0.7054756739394747
Sensitivity: 0.7868020304568528
Specificity: 0.7447257383966245
Threshold: 0.12
Accuracy:  0.7570789865871833

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.49it/s]
Loss: 0.5695730327291691
AUROC: 0.8315498808743437
AUPRC: 0.6825059478430717
Sensitivity: 0.7567049808429118
Specificity: 0.7568618481244281
Threshold: 0.12
Accuracy:  0.7568204782755137

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0004.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.37it/s]
Loss: 0.6065196581184864
AUROC: 0.8414270789455521
AUPRC: 0.7053854275872599
Sensitivity: 0.7428087986463621
Specificity: 0.790436005625879
Threshold: 0.13
Accuracy:  0.7764530551415797

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.43it/s]
Loss: 0.5638820874564191
AUROC: 0.8318706992950612
AUPRC: 0.683166661909492
Sensitivity: 0.7681992337164751
Specificity: 0.7445105215004575
Threshold: 0.12
Accuracy:  0.7507578309195015

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0005.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.41it/s]
Loss: 0.6521284803748131
AUROC: 0.840883291567607
AUPRC: 0.7053484473505764
Sensitivity: 0.7428087986463621
Specificity: 0.7883263009845288
Threshold: 0.1
Accuracy:  0.7749627421758569

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.46it/s]
Loss: 0.6034293710551364
AUROC: 0.8314632679339907
AUPRC: 0.6831448415745222
Sensitivity: 0.776500638569604
Specificity: 0.7353613906678865
Threshold: 0.09
Accuracy:  0.7462108454024924

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0006.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.38it/s]
Loss: 0.6272323559969664
AUROC: 0.8405560672154516
AUPRC: 0.7044018768957173
Sensitivity: 0.7428087986463621
Specificity: 0.7883263009845288
Threshold: 0.11
Accuracy:  0.7749627421758569

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.44it/s]
Loss: 0.5831606324682844
AUROC: 0.8312634593296012
AUPRC: 0.682715230233818
Sensitivity: 0.7681992337164751
Specificity: 0.7433668801463861
Threshold: 0.1
Accuracy:  0.7499157965644998

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0007.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.36it/s]
Loss: 0.6084731109440327
AUROC: 0.8399742028219829
AUPRC: 0.702966121919981
Sensitivity: 0.7563451776649747
Specificity: 0.7679324894514767
Threshold: 0.12
Accuracy:  0.7645305514157973

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.37it/s]
Loss: 0.5676552599414866
AUROC: 0.830675937318522
AUPRC: 0.6818064112721144
Sensitivity: 0.7369093231162197
Specificity: 0.7740164684354987
Threshold: 0.12
Accuracy:  0.7642303805995284

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0008.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
Loss: 0.6386880874633789
AUROC: 0.83907939295718
AUPRC: 0.7024699493213593
Sensitivity: 0.7783417935702199
Specificity: 0.750351617440225
Threshold: 0.1
Accuracy:  0.7585692995529061

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.48it/s]
Loss: 0.5896985778149139
AUROC: 0.8300873198655324
AUPRC: 0.6810488221618369
Sensitivity: 0.7528735632183908
Specificity: 0.7573193046660567
Threshold: 0.1
Accuracy:  0.7561468507915123

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0009.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.52it/s]
Loss: 0.6050509754568338
AUROC: 0.8389723013510202
AUPRC: 0.7018522505854815
Sensitivity: 0.751269035532995
Specificity: 0.7735583684950773
Threshold: 0.12
Accuracy:  0.7670144063586687

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.49it/s]
Loss: 0.5626246374338231
AUROC: 0.8299682818446424
AUPRC: 0.6809894778951356
Sensitivity: 0.7343550446998723
Specificity: 0.7779048490393413
Threshold: 0.12
Accuracy:  0.7664196699225329

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0010.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.55it/s]
Loss: 0.5876322090625763
AUROC: 0.8388556904909793
AUPRC: 0.7009029001561594
Sensitivity: 0.7766497461928934
Specificity: 0.7517580872011251
Threshold: 0.13
Accuracy:  0.7590660705414803

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.51it/s]
Loss: 0.5447535039262569
AUROC: 0.8297414523398055
AUPRC: 0.6804972929158954
Sensitivity: 0.7515964240102171
Specificity: 0.7609789569990851
Threshold: 0.13
Accuracy:  0.7585045469855171

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0011.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.51it/s]
Loss: 0.5661565754562616
AUROC: 0.8388080942215749
AUPRC: 0.7009097348065042
Sensitivity: 0.766497461928934
Specificity: 0.7637130801687764
Threshold: 0.15
Accuracy:  0.7645305514157973

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.55it/s]
Loss: 0.5274513579429464
AUROC: 0.8299019710943552
AUPRC: 0.6811772180431259
Sensitivity: 0.7401021711366539
Specificity: 0.7710430009149131
Threshold: 0.15
Accuracy:  0.7628831256315257

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0012.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.56it/s]
Loss: 0.5756046772003174
AUROC: 0.8384427928538961
AUPRC: 0.7019410053853053
Sensitivity: 0.7495769881556683
Specificity: 0.7812939521800282
Threshold: 0.14
Accuracy:  0.7719821162444114

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.50it/s]
Loss: 0.5361364518708371
AUROC: 0.8294150836800771
AUPRC: 0.6808714060923005
Sensitivity: 0.7624521072796935
Specificity: 0.7481701738334858
Threshold: 0.13
Accuracy:  0.7519366790165039

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0013.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.46it/s]
Loss: 0.542411683127284
AUROC: 0.8388271327293366
AUPRC: 0.7003943054149423
Sensitivity: 0.7715736040609137
Specificity: 0.7566807313642757
Threshold: 0.16
Accuracy:  0.7610531544957775

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.55it/s]
Loss: 0.5078703700862033
AUROC: 0.830185252372289
AUPRC: 0.6819524936962285
Sensitivity: 0.7490421455938697
Specificity: 0.7639524245196706
Threshold: 0.16
Accuracy:  0.76002020882452

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0014.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.55it/s]
Loss: 0.5794579349458218
AUROC: 0.8377288488128302
AUPRC: 0.7015055194453705
Sensitivity: 0.766497461928934
Specificity: 0.759493670886076
Threshold: 0.13
Accuracy:  0.7615499254843517

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.53it/s]
Loss: 0.5397773958901142
AUROC: 0.8288002486507076
AUPRC: 0.6798406284839512
Sensitivity: 0.7458492975734355
Specificity: 0.7671546203110704
Threshold: 0.13
Accuracy:  0.761535870663523

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0015.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.42it/s]
Loss: 0.5856678169220686
AUROC: 0.8364711173938186
AUPRC: 0.7011984384644666
Sensitivity: 0.754653130287648
Specificity: 0.7777777777777778
Threshold: 0.13
Accuracy:  0.7709885742672627

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.55it/s]
Loss: 0.5470149589979902
AUROC: 0.8275158064964672
AUPRC: 0.6776050074002107
Sensitivity: 0.7624521072796935
Specificity: 0.7493138151875571
Threshold: 0.12
Accuracy:  0.7527787133715056

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0016.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
Loss: 0.5527292396873236
AUROC: 0.8369673085023596
AUPRC: 0.7015046646038281
Sensitivity: 0.7563451776649747
Specificity: 0.7644163150492265
Threshold: 0.16
Accuracy:  0.762046696472926

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.53it/s]
Loss: 0.5185803330325066
AUROC: 0.8281176422818377
AUPRC: 0.679432423279194
Sensitivity: 0.7611749680715197
Specificity: 0.747483989021043
Threshold: 0.15
Accuracy:  0.7510946446615022

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0017.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
Loss: 0.5685780346393585
AUROC: 0.8367852527718876
AUPRC: 0.7032016361188065
Sensitivity: 0.7529610829103215
Specificity: 0.7672292545710268
Threshold: 0.14
Accuracy:  0.7630402384500745

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.55it/s]
Loss: 0.5330391808393153
AUROC: 0.8279165191471561
AUPRC: 0.6783888779117168
Sensitivity: 0.7624521072796935
Specificity: 0.7497712717291857
Threshold: 0.13
Accuracy:  0.7531155271135063

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0018.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.58it/s]
Loss: 0.5258708987385035
AUROC: 0.8363092900778438
AUPRC: 0.7027105488650752
Sensitivity: 0.7648054145516074
Specificity: 0.749648382559775
Threshold: 0.19
Accuracy:  0.7540983606557377

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.58it/s]
Loss: 0.4953501389381733
AUROC: 0.8279272544778745
AUPRC: 0.6801233814860097
Sensitivity: 0.7432950191570882
Specificity: 0.7596065873741995
Threshold: 0.19
Accuracy:  0.7553048164365106

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0019.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.57it/s]
Loss: 0.5854278262704611
AUROC: 0.8371422247924207
AUPRC: 0.7048539992249728
Sensitivity: 0.7715736040609137
Specificity: 0.750351617440225
Threshold: 0.12
Accuracy:  0.756582215598609

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.58it/s]
Loss: 0.5459291307215995
AUROC: 0.8282607069952875
AUPRC: 0.6776794106415991
Sensitivity: 0.7490421455938697
Specificity: 0.7584629460201281
Threshold: 0.12
Accuracy:  0.7559784439205119

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0020.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.54it/s]
Loss: 0.547433054074645
AUROC: 0.8370315634660555
AUPRC: 0.7041299168967909
Sensitivity: 0.7698815566835872
Specificity: 0.7447257383966245
Threshold: 0.16
Accuracy:  0.7521112767014406

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.53it/s]
Loss: 0.5143020733239803
AUROC: 0.8281962950109778
AUPRC: 0.6789466557559497
Sensitivity: 0.7490421455938697
Specificity: 0.7580054894784996
Threshold: 0.16
Accuracy:  0.7556416301785113

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0021.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
Loss: 0.5915297903120518
AUROC: 0.8347493223481143
AUPRC: 0.702918753969618
Sensitivity: 0.7580372250423012
Specificity: 0.7531645569620253
Threshold: 0.11
Accuracy:  0.754595131644312

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.55it/s]
Loss: 0.553231508807933
AUROC: 0.8264824396280055
AUPRC: 0.6755195301119477
Sensitivity: 0.7445721583652618
Specificity: 0.7623513266239708
Threshold: 0.11
Accuracy:  0.7576625126305153

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0022.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.55it/s]
Loss: 0.575700493529439
AUROC: 0.8380644025121311
AUPRC: 0.7049432174208874
Sensitivity: 0.7715736040609137
Specificity: 0.7489451476793249
Threshold: 0.12
Accuracy:  0.7555886736214605

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.56it/s]
Loss: 0.5354587613268101
AUROC: 0.8292172468711259
AUPRC: 0.6774540801001558
Sensitivity: 0.7503192848020435
Specificity: 0.7580054894784996
Threshold: 0.12
Accuracy:  0.7559784439205119

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0023.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.55it/s]
Loss: 0.5325752142816782
AUROC: 0.8385879614755796
AUPRC: 0.7037570454011539
Sensitivity: 0.754653130287648
Specificity: 0.7728551336146273
Threshold: 0.17
Accuracy:  0.767511177347243

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.57it/s]
Loss: 0.5048061805836698
AUROC: 0.8295758215230089
AUPRC: 0.6811471990039729
Sensitivity: 0.7496807151979565
Specificity: 0.7593778591033852
Threshold: 0.16
Accuracy:  0.7568204782755137

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0024.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.55it/s]
Loss: 0.5576832834631205
AUROC: 0.8399385056199296
AUPRC: 0.7066755659382359
Sensitivity: 0.7597292724196277
Specificity: 0.770042194092827
Threshold: 0.15
Accuracy:  0.7670144063586687

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.43it/s]
Loss: 0.5233680900741131
AUROC: 0.8305880098478767
AUPRC: 0.6804772736454189
Sensitivity: 0.7573435504469987
Specificity: 0.7534309240622141
Threshold: 0.14
Accuracy:  0.754462782081509

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0025.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.54it/s]
Loss: 0.5944366380572319
AUROC: 0.8389615921904041
AUPRC: 0.7049005698149501
Sensitivity: 0.7698815566835872
Specificity: 0.7609001406469761
Threshold: 0.11
Accuracy:  0.7635370094386488

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.42it/s]
Loss: 0.5528153647133645
AUROC: 0.8297161111169535
AUPRC: 0.6765579029242134
Sensitivity: 0.7458492975734355
Specificity: 0.7682982616651418
Threshold: 0.11
Accuracy:  0.7623779050185248

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0026.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.57it/s]
Loss: 0.5158200040459633
AUROC: 0.8373111915488064
AUPRC: 0.7052033314160289
Sensitivity: 0.7580372250423012
Specificity: 0.7665260196905767
Threshold: 0.19
Accuracy:  0.764033780427223

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.56it/s]
Loss: 0.4871065160061451
AUROC: 0.8289390046259781
AUPRC: 0.6800574037038787
Sensitivity: 0.7554278416347382
Specificity: 0.7497712717291857
Threshold: 0.18
Accuracy:  0.7512630515325025

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0027.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
Loss: 0.5156710054725409
AUROC: 0.837251696212051
AUPRC: 0.7056755685691929
Sensitivity: 0.7563451776649747
Specificity: 0.7672292545710268
Threshold: 0.19
Accuracy:  0.764033780427223

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.58it/s]
Loss: 0.4876773404948255
AUROC: 0.8288868615910608
AUPRC: 0.6793943083292002
Sensitivity: 0.7522349936143039
Specificity: 0.7538883806038427
Threshold: 0.18
Accuracy:  0.7534523408555069

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0028.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
Loss: 0.5440018363296986
AUROC: 0.8372707347198126
AUPRC: 0.7053320484442198
Sensitivity: 0.7563451776649747
Specificity: 0.7609001406469761
Threshold: 0.16
Accuracy:  0.7595628415300546

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.53it/s]
Loss: 0.5136593253688609
AUROC: 0.8288685311964329
AUPRC: 0.6770809859018916
Sensitivity: 0.7592592592592593
Specificity: 0.7483989021043
Threshold: 0.15
Accuracy:  0.7512630515325025

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0029.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
Loss: 0.5755344778299332
AUROC: 0.8365032448756667
AUPRC: 0.7052419528021695
Sensitivity: 0.7648054145516074
Specificity: 0.7566807313642757
Threshold: 0.12
Accuracy:  0.7590660705414803

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.52it/s]
Loss: 0.539667325768065
AUROC: 0.8277566576577524
AUPRC: 0.6754705126388176
Sensitivity: 0.7656449553001277
Specificity: 0.7419945105215004
Threshold: 0.11
Accuracy:  0.7482317278544964

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0030.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
Loss: 0.4894185736775398
AUROC: 0.8443494898869827
AUPRC: 0.7010121148079791
Sensitivity: 0.7715736040609137
Specificity: 0.7566807313642757
Threshold: 0.2
Accuracy:  0.7610531544957775

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.48it/s]
Loss: 0.4667826291728527
AUROC: 0.8347193594673642
AUPRC: 0.6860525120367869
Sensitivity: 0.7471264367816092
Specificity: 0.7646386093321135
Threshold: 0.2
Accuracy:  0.76002020882452

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0031.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.52it/s]
Loss: 0.5775497667491436
AUROC: 0.8354739755497964
AUPRC: 0.7034071077876402
Sensitivity: 0.7681895093062606
Specificity: 0.7426160337552743
Threshold: 0.12
Accuracy:  0.7501241927471436

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.51it/s]
Loss: 0.5402472282343722
AUROC: 0.8268744617728748
AUPRC: 0.6739595447703368
Sensitivity: 0.7522349936143039
Specificity: 0.7561756633119854
Threshold: 0.12
Accuracy:  0.7551364095655103

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0032.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.54it/s]
Loss: 0.5053962357342243
AUROC: 0.8408071375365599
AUPRC: 0.7057896642288262
Sensitivity: 0.7698815566835872
Specificity: 0.7524613220815752
Threshold: 0.21
Accuracy:  0.7575757575757576

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.49it/s]
Loss: 0.47747111732655384
AUROC: 0.8325155494327655
AUPRC: 0.6840389696018577
Sensitivity: 0.7503192848020435
Specificity: 0.7612076852698993
Threshold: 0.21
Accuracy:  0.7583361401145167

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0033.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.54it/s]
Loss: 0.5866269208490849
AUROC: 0.8345470382031456
AUPRC: 0.7028140031165672
Sensitivity: 0.7614213197969543
Specificity: 0.7517580872011251
Threshold: 0.11
Accuracy:  0.754595131644312

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.54it/s]
Loss: 0.5535393994539342
AUROC: 0.8260937768383267
AUPRC: 0.6720901886772421
Sensitivity: 0.7426564495530013
Specificity: 0.7605215004574566
Threshold: 0.11
Accuracy:  0.7558100370495117

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0034.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.52it/s]
Loss: 0.5359882991760969
AUROC: 0.8383868672373459
AUPRC: 0.7040118992178553
Sensitivity: 0.7580372250423012
Specificity: 0.7644163150492265
Threshold: 0.16
Accuracy:  0.7625434674615003

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.44it/s]
Loss: 0.5079275693031068
AUROC: 0.830406969814879
AUPRC: 0.6803723691057185
Sensitivity: 0.7573435504469987
Specificity: 0.7520585544373285
Threshold: 0.15
Accuracy:  0.7534523408555069

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0035.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
Loss: 0.5266702901571989
AUROC: 0.8351431814774357
AUPRC: 0.6997566006688033
Sensitivity: 0.7478849407783418
Specificity: 0.7665260196905767
Threshold: 0.18
Accuracy:  0.7610531544957775

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.38it/s]
Loss: 0.49867991659235444
AUROC: 0.8267522104557156
AUPRC: 0.6732906525713316
Sensitivity: 0.7464878671775224
Specificity: 0.7568618481244281
Threshold: 0.17
Accuracy:  0.7541259683395083

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0036.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
Loss: 0.5788878761231899
AUROC: 0.842743115794584
AUPRC: 0.7098978595962254
Sensitivity: 0.7580372250423012
Specificity: 0.7637130801687764
Threshold: 0.12
Accuracy:  0.762046696472926

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.56it/s]
Loss: 0.5446407465224571
AUROC: 0.8340024292519798
AUPRC: 0.6843886248685371
Sensitivity: 0.7675606641123882
Specificity: 0.7509149130832571
Threshold: 0.11
Accuracy:  0.7553048164365106

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0037.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.52it/s]
Loss: 0.5677276458591223
AUROC: 0.8362700231555851
AUPRC: 0.7035995123291199
Sensitivity: 0.7614213197969543
Specificity: 0.7538677918424754
Threshold: 0.12
Accuracy:  0.7560854446100348

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.58it/s]
Loss: 0.5346696741403417
AUROC: 0.8286184052936427
AUPRC: 0.6770031682088623
Sensitivity: 0.7611749680715197
Specificity: 0.7470265324794144
Threshold: 0.11
Accuracy:  0.7507578309195015

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0038.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
Loss: 0.5350614935159683
AUROC: 0.8424444492040715
AUPRC: 0.7067194294294779
Sensitivity: 0.766497461928934
Specificity: 0.7630098452883263
Threshold: 0.16
Accuracy:  0.764033780427223

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.54it/s]
Loss: 0.503978210243773
AUROC: 0.8340626055275707
AUPRC: 0.6829793789202667
Sensitivity: 0.7490421455938697
Specificity: 0.7671546203110704
Threshold: 0.16
Accuracy:  0.7623779050185248

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0039.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
Loss: 0.5124535243958235
AUROC: 0.8361081958396102
AUPRC: 0.7038403860668423
Sensitivity: 0.7715736040609137
Specificity: 0.7426160337552743
Threshold: 0.18
Accuracy:  0.7511177347242921

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.52it/s]
Loss: 0.48474203018431966
AUROC: 0.829176423402612
AUPRC: 0.6804680583870092
Sensitivity: 0.7503192848020435
Specificity: 0.755946935041171
Threshold: 0.18
Accuracy:  0.754462782081509

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0040.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.44it/s]
Loss: 0.46989538334310055
AUROC: 0.8415127522304802
AUPRC: 0.7061289884278504
Sensitivity: 0.7597292724196277
Specificity: 0.7679324894514767
Threshold: 0.22
Accuracy:  0.7655240933929458

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.58it/s]
Loss: 0.44870874507630126
AUROC: 0.8332385410933855
AUPRC: 0.6848377203588598
Sensitivity: 0.7656449553001277
Specificity: 0.7431381518755719
Threshold: 0.21
Accuracy:  0.7490737622094982

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0041.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
Loss: 0.4840890523046255
AUROC: 0.8404382664486758
AUPRC: 0.7061536021106916
Sensitivity: 0.7597292724196277
Specificity: 0.7630098452883263
Threshold: 0.21
Accuracy:  0.762046696472926

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.52it/s]
Loss: 0.45879519080862086
AUROC: 0.8326471485208904
AUPRC: 0.6835305522623008
Sensitivity: 0.764367816091954
Specificity: 0.7463403476669717
Threshold: 0.2
Accuracy:  0.7510946446615022

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0042.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
Loss: 0.49406230263412
AUROC: 0.839629129868801
AUPRC: 0.7050199831920444
Sensitivity: 0.754653130287648
Specificity: 0.7672292545710268
Threshold: 0.2
Accuracy:  0.7635370094386488

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.55it/s]
Loss: 0.46920153498649597
AUROC: 0.8319177302677319
AUPRC: 0.6839089139379354
Sensitivity: 0.7535121328224776
Specificity: 0.7513723696248856
Threshold: 0.19
Accuracy:  0.7519366790165039

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0043.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.51it/s]
Loss: 0.5305029768496752
AUROC: 0.8379287531443286
AUPRC: 0.7023174206164888
Sensitivity: 0.7614213197969543
Specificity: 0.7545710267229254
Threshold: 0.15
Accuracy:  0.756582215598609

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.53it/s]
Loss: 0.49905070884430663
AUROC: 0.830198908881434
AUPRC: 0.6767397817621077
Sensitivity: 0.7618135376756067
Specificity: 0.7502287282708143
Threshold: 0.14
Accuracy:  0.7532839339845065

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0044.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.51it/s]
Loss: 0.45413713343441486
AUROC: 0.8471552899683724
AUPRC: 0.7112717130196097
Sensitivity: 0.7648054145516074
Specificity: 0.7658227848101266
Threshold: 0.22
Accuracy:  0.7655240933929458

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.53it/s]
Loss: 0.43408659227350926
AUROC: 0.837357694792941
AUPRC: 0.6894810604803758
Sensitivity: 0.768837803320562
Specificity: 0.7470265324794144
Threshold: 0.21
Accuracy:  0.7527787133715056

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0045.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.52it/s]
Loss: 0.5490324329584837
AUROC: 0.844331641285956
AUPRC: 0.7091748222649894
Sensitivity: 0.7631133671742809
Specificity: 0.7637130801687764
Threshold: 0.13
Accuracy:  0.7635370094386488

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.57it/s]
Loss: 0.5148284663545325
AUROC: 0.8361413160960437
AUPRC: 0.6858599616995665
Sensitivity: 0.7496807151979565
Specificity: 0.7721866422689845
Threshold: 0.13
Accuracy:  0.7662512630515325

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0046.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
Loss: 0.5103073976933956
AUROC: 0.8389437435893775
AUPRC: 0.7047532308689821
Sensitivity: 0.7563451776649747
Specificity: 0.7658227848101266
Threshold: 0.18
Accuracy:  0.7630402384500745

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.46it/s]
Loss: 0.48427645132896746
AUROC: 0.8315092034647512
AUPRC: 0.6826491540350431
Sensitivity: 0.7535121328224776
Specificity: 0.7529734675205856
Threshold: 0.17
Accuracy:  0.7531155271135063

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0047.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
Loss: 0.5383651312440634
AUROC: 0.8368614068029347
AUPRC: 0.7035131471984306
Sensitivity: 0.7529610829103215
Specificity: 0.7742616033755274
Threshold: 0.14
Accuracy:  0.7680079483358172

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.50it/s]
Loss: 0.5053907398213732
AUROC: 0.8292918829799291
AUPRC: 0.6777444790405758
Sensitivity: 0.7541507024265645
Specificity: 0.7598353156450137
Threshold: 0.13
Accuracy:  0.7583361401145167

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0048.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.45it/s]
Loss: 0.4770314507186413
AUROC: 0.8415603484998845
AUPRC: 0.7066162186695588
Sensitivity: 0.7732656514382402
Specificity: 0.7461322081575246
Threshold: 0.23
Accuracy:  0.7540983606557377

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.49it/s]
Loss: 0.45425123927441047
AUROC: 0.833042237903108
AUPRC: 0.6821553909417756
Sensitivity: 0.7541507024265645
Specificity: 0.7623513266239708
Threshold: 0.23
Accuracy:  0.7601886156955204

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0049.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.44it/s]
Loss: 0.47423915192484856
AUROC: 0.846991082838927
AUPRC: 0.7123548574145805
Sensitivity: 0.7597292724196277
Specificity: 0.7763713080168776
Threshold: 0.22
Accuracy:  0.771485345255837

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.49it/s]
Loss: 0.4502637392662941
AUROC: 0.8372523132811962
AUPRC: 0.688034688937309
Sensitivity: 0.7656449553001277
Specificity: 0.7447392497712717
Threshold: 0.21
Accuracy:  0.7502526103065005

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0050.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.55it/s]
Loss: 0.5358919315040112
AUROC: 0.8415044228833345
AUPRC: 0.708317831229846
Sensitivity: 0.7648054145516074
Specificity: 0.7573839662447257
Threshold: 0.14
Accuracy:  0.7595628415300546

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.53it/s]
Loss: 0.5040629483917927
AUROC: 0.8332673147008889
AUPRC: 0.6809841635074304
Sensitivity: 0.7598978288633461
Specificity: 0.7529734675205856
Threshold: 0.13
Accuracy:  0.7547995958235096

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0051.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
Loss: 0.5383453108370304
AUROC: 0.8396100913610391
AUPRC: 0.7097365596144762
Sensitivity: 0.7614213197969543
Specificity: 0.7573839662447257
Threshold: 0.14
Accuracy:  0.7585692995529061

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.56it/s]
Loss: 0.5051885738651803
AUROC: 0.8323641593607994
AUPRC: 0.6818397932347235
Sensitivity: 0.764367816091954
Specificity: 0.7509149130832571
Threshold: 0.13
Accuracy:  0.754462782081509

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0052.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.54it/s]
Loss: 0.5172912627458572
AUROC: 0.8394470741383291
AUPRC: 0.7078526113733613
Sensitivity: 0.7648054145516074
Specificity: 0.760196905766526
Threshold: 0.16
Accuracy:  0.7615499254843517

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.52it/s]
Loss: 0.4857705615936442
AUROC: 0.8320832880550676
AUPRC: 0.6795278164149282
Sensitivity: 0.7624521072796935
Specificity: 0.7536596523330283
Threshold: 0.15
Accuracy:  0.7559784439205119

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0053.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
Loss: 0.5331389121711254
AUROC: 0.8409630153188593
AUPRC: 0.7111875207673467
Sensitivity: 0.7580372250423012
Specificity: 0.7686357243319268
Threshold: 0.13
Accuracy:  0.7655240933929458

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.54it/s]
Loss: 0.4996856600046158
AUROC: 0.8343332527088089
AUPRC: 0.6835004344131304
Sensitivity: 0.7567049808429118
Specificity: 0.7538883806038427
Threshold: 0.12
Accuracy:  0.7546311889525092

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0054.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
Loss: 0.4535711333155632
AUROC: 0.8427466855147894
AUPRC: 0.7114642853985601
Sensitivity: 0.7614213197969543
Specificity: 0.7623066104078763
Threshold: 0.24
Accuracy:  0.762046696472926

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.55it/s]
Loss: 0.43404793929546437
AUROC: 0.8343319381785167
AUPRC: 0.6845824185436042
Sensitivity: 0.7656449553001277
Specificity: 0.7481701738334858
Threshold: 0.23
Accuracy:  0.7527787133715056

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0055.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.54it/s]
Loss: 0.5713954046368599
AUROC: 0.8395470263040783
AUPRC: 0.7089794877763678
Sensitivity: 0.7681895093062606
Specificity: 0.7573839662447257
Threshold: 0.1
Accuracy:  0.7605563835072032

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.57it/s]
Loss: 0.5308589928961814
AUROC: 0.8319188987391026
AUPRC: 0.679080268110134
Sensitivity: 0.7522349936143039
Specificity: 0.7637236962488564
Threshold: 0.1
Accuracy:  0.7606938363085214

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0056.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.43it/s]
Loss: 0.5187660101801157
AUROC: 0.839921846925638
AUPRC: 0.7075464943371922
Sensitivity: 0.7631133671742809
Specificity: 0.770745428973277
Threshold: 0.15
Accuracy:  0.7685047193243915

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.46it/s]
Loss: 0.4870006892275303
AUROC: 0.8323486040856769
AUPRC: 0.6807050095263226
Sensitivity: 0.7547892720306514
Specificity: 0.7564043915827996
Threshold: 0.14
Accuracy:  0.7559784439205119

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0057.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.54it/s]
Loss: 0.49508259259164333
AUROC: 0.84815838134607
AUPRC: 0.7105039171964642
Sensitivity: 0.7901861252115059
Specificity: 0.749648382559775
Threshold: 0.2
Accuracy:  0.7615499254843517

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.46it/s]
Loss: 0.4687051072399667
AUROC: 0.8375242019632656
AUPRC: 0.6855276214984658
Sensitivity: 0.7605363984674329
Specificity: 0.7564043915827996
Threshold: 0.2
Accuracy:  0.757494105759515

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0058.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
Loss: 0.4809753764420748
AUROC: 0.8434653891827959
AUPRC: 0.70727701687219
Sensitivity: 0.766497461928934
Specificity: 0.7454289732770746
Threshold: 0.19
Accuracy:  0.7516145057128664

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.54it/s]
Loss: 0.4595377464243706
AUROC: 0.8338340963451384
AUPRC: 0.681625558922068
Sensitivity: 0.7490421455938697
Specificity: 0.7621225983531564
Threshold: 0.19
Accuracy:  0.7586729538565173

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0059.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.54it/s]
Loss: 0.47560272552073
AUROC: 0.8463509130154381
AUPRC: 0.7140266801716961
Sensitivity: 0.7597292724196277
Specificity: 0.770042194092827
Threshold: 0.19
Accuracy:  0.7670144063586687

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.58it/s]
Loss: 0.4520513840178226
AUROC: 0.8360738368743857
AUPRC: 0.6850360172324375
Sensitivity: 0.7586206896551724
Specificity: 0.7486276303751144
Threshold: 0.18
Accuracy:  0.7512630515325025

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0060.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.55it/s]
Loss: 0.517438717186451
AUROC: 0.8465412980930553
AUPRC: 0.7130809229571712
Sensitivity: 0.7648054145516074
Specificity: 0.7609001406469761
Threshold: 0.15
Accuracy:  0.762046696472926

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.55it/s]
Loss: 0.48608613521494765
AUROC: 0.8358068411661811
AUPRC: 0.6844768369500226
Sensitivity: 0.7662835249042146
Specificity: 0.7458828911253431
Threshold: 0.14
Accuracy:  0.7512630515325025

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0061.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
Loss: 0.49077618680894375
AUROC: 0.8422861916083018
AUPRC: 0.7099053782387232
Sensitivity: 0.7563451776649747
Specificity: 0.7672292545710268
Threshold: 0.18
Accuracy:  0.764033780427223

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.58it/s]
Loss: 0.4681145707343487
AUROC: 0.8326830059860788
AUPRC: 0.6811286834768946
Sensitivity: 0.7484035759897829
Specificity: 0.7589204025617566
Threshold: 0.17
Accuracy:  0.7561468507915123

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0062.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
Loss: 0.5285966023802757
AUROC: 0.8469113590876747
AUPRC: 0.7127450598464286
Sensitivity: 0.7580372250423012
Specificity: 0.7665260196905767
Threshold: 0.13
Accuracy:  0.764033780427223

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.53it/s]
Loss: 0.4997693763134327
AUROC: 0.8357111725727053
AUPRC: 0.6828766649419481
Sensitivity: 0.756066411238825
Specificity: 0.7570905763952425
Threshold: 0.12
Accuracy:  0.7568204782755137

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0063.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.56it/s]
Loss: 0.4453729949891567
AUROC: 0.8434130332864509
AUPRC: 0.7099420295238494
Sensitivity: 0.7597292724196277
Specificity: 0.7791842475386779
Threshold: 0.27
Accuracy:  0.7734724292101341

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.56it/s]
Loss: 0.42814125627913374
AUROC: 0.8333041215490659
AUPRC: 0.6830001844856806
Sensitivity: 0.7573435504469987
Specificity: 0.7602927721866423
Threshold: 0.26
Accuracy:  0.7595149882115191

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0064.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.55it/s]
Loss: 0.529452808201313
AUROC: 0.8473432952325196
AUPRC: 0.7169651362581906
Sensitivity: 0.7563451776649747
Specificity: 0.7749648382559775
Threshold: 0.13
Accuracy:  0.76949826130154

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.54it/s]
Loss: 0.49768632047988
AUROC: 0.8378338468765008
AUPRC: 0.687064988692543
Sensitivity: 0.7669220945083014
Specificity: 0.7463403476669717
Threshold: 0.12
Accuracy:  0.7517682721455036

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0065.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.54it/s]
Loss: 0.5826505869626999
AUROC: 0.8441638644363055
AUPRC: 0.7097566633389951
Sensitivity: 0.7681895093062606
Specificity: 0.7679324894514767
Threshold: 0.1
Accuracy:  0.7680079483358172

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.53it/s]
Loss: 0.5464858301776521
AUROC: 0.8331986670078604
AUPRC: 0.6760540860292042
Sensitivity: 0.7662835249042146
Specificity: 0.7467978042086002
Threshold: 0.09
Accuracy:  0.7519366790165039

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0066.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.52it/s]
Loss: 0.5262070149183273
AUROC: 0.8399028084178761
AUPRC: 0.7069713414976739
Sensitivity: 0.7749576988155669
Specificity: 0.7616033755274262
Threshold: 0.13
Accuracy:  0.7655240933929458

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.56it/s]
Loss: 0.4931587094956256
AUROC: 0.8325500193382012
AUPRC: 0.6767495775985715
Sensitivity: 0.7515964240102171
Specificity: 0.762580054894785
Threshold: 0.13
Accuracy:  0.7596833950825194

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0067.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.54it/s]
Loss: 0.49414070695638657
AUROC: 0.8445755721666536
AUPRC: 0.7121030205508698
Sensitivity: 0.7597292724196277
Specificity: 0.7735583684950773
Threshold: 0.17
Accuracy:  0.76949826130154

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.58it/s]
Loss: 0.46552133718703653
AUROC: 0.8349623284830087
AUPRC: 0.6819504082748338
Sensitivity: 0.7547892720306514
Specificity: 0.7538883806038427
Threshold: 0.16
Accuracy:  0.7541259683395083

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0068.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
Loss: 0.5024982932955027
AUROC: 0.8461486288704694
AUPRC: 0.7151641502241393
Sensitivity: 0.7580372250423012
Specificity: 0.7770745428973277
Threshold: 0.18
Accuracy:  0.771485345255837

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.50it/s]
Loss: 0.4730014854923208
AUROC: 0.837430213047385
AUPRC: 0.6866101762604107
Sensitivity: 0.7662835249042146
Specificity: 0.7442817932296432
Threshold: 0.17
Accuracy:  0.7500842034355002

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0069.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
Loss: 0.5224003195762634
AUROC: 0.8469303975954363
AUPRC: 0.7103608240751339
Sensitivity: 0.754653130287648
Specificity: 0.7834036568213784
Threshold: 0.16
Accuracy:  0.7749627421758569

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.54it/s]
Loss: 0.4914125159699866
AUROC: 0.8385071785038659
AUPRC: 0.6854017173266453
Sensitivity: 0.756066411238825
Specificity: 0.7623513266239708
Threshold: 0.15
Accuracy:  0.7606938363085214

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0070.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
Loss: 0.4967314712703228
AUROC: 0.8494779879153073
AUPRC: 0.7133489236437542
Sensitivity: 0.7648054145516074
Specificity: 0.7651195499296765
Threshold: 0.16
Accuracy:  0.7650273224043715

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.42it/s]
Loss: 0.46924599624694663
AUROC: 0.8374031191174771
AUPRC: 0.6808014072794727
Sensitivity: 0.7637292464878672
Specificity: 0.7513723696248856
Threshold: 0.15
Accuracy:  0.7546311889525092

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0071.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.55it/s]
Loss: 0.5143324974924326
AUROC: 0.8426098462402516
AUPRC: 0.7079816357588907
Sensitivity: 0.754653130287648
Specificity: 0.7791842475386779
Threshold: 0.17
Accuracy:  0.7719821162444114

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.50it/s]
Loss: 0.4819439579831793
AUROC: 0.8337441970790553
AUPRC: 0.6778814737802985
Sensitivity: 0.7579821200510856
Specificity: 0.7506861848124429
Threshold: 0.16
Accuracy:  0.7526103065005052

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0072.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
Loss: 0.5061056781560183
AUROC: 0.85074999821514
AUPRC: 0.7115281700748571
Sensitivity: 0.7715736040609137
Specificity: 0.7714486638537271
Threshold: 0.13
Accuracy:  0.771485345255837

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.53it/s]
Loss: 0.48717992673528954
AUROC: 0.8359844488145274
AUPRC: 0.683237570548761
Sensitivity: 0.7496807151979565
Specificity: 0.7673833485818847
Threshold: 0.12
Accuracy:  0.7627147187605254

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0073.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.57it/s]
Loss: 0.5961165558546782
AUROC: 0.8462473911294832
AUPRC: 0.7146981931787808
Sensitivity: 0.7648054145516074
Specificity: 0.7658227848101266
Threshold: 0.08
Accuracy:  0.7655240933929458

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.54it/s]
Loss: 0.5600559594149285
AUROC: 0.8360092788311546
AUPRC: 0.6819461947944812
Sensitivity: 0.7458492975734355
Specificity: 0.7666971637694419
Threshold: 0.08
Accuracy:  0.7611990569215223

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0074.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.41it/s]
Loss: 0.46462192572653294
AUROC: 0.8492816533040141
AUPRC: 0.7154319122715144
Sensitivity: 0.7648054145516074
Specificity: 0.7559774964838256
Threshold: 0.17
Accuracy:  0.7585692995529061

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.49it/s]
Loss: 0.4416108746477898
AUROC: 0.8387586919664088
AUPRC: 0.6874144695414065
Sensitivity: 0.756066411238825
Specificity: 0.7493138151875571
Threshold: 0.16
Accuracy:  0.7510946446615022

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0075.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.45it/s]
Loss: 0.4549484495073557
AUROC: 0.8425087041677672
AUPRC: 0.7095989624645608
Sensitivity: 0.7648054145516074
Specificity: 0.770042194092827
Threshold: 0.29
Accuracy:  0.7685047193243915

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.39it/s]
Loss: 0.4365045580458134
AUROC: 0.8361912682471411
AUPRC: 0.6856900619335387
Sensitivity: 0.7605363984674329
Specificity: 0.7586916742909423
Threshold: 0.28
Accuracy:  0.7591781744695184

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0076.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
Loss: 0.5100040026009083
AUROC: 0.8433999443123648
AUPRC: 0.7114111219427696
Sensitivity: 0.7715736040609137
Specificity: 0.7587904360056259
Threshold: 0.14
Accuracy:  0.7625434674615003

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.48it/s]
Loss: 0.47929724163197457
AUROC: 0.8353173246913191
AUPRC: 0.6854809598013878
Sensitivity: 0.7535121328224776
Specificity: 0.7607502287282708
Threshold: 0.14
Accuracy:  0.7588413607275177

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0077.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.52it/s]
Loss: 0.4995445888489485
AUROC: 0.8414473073600491
AUPRC: 0.7083050471611556
Sensitivity: 0.7631133671742809
Specificity: 0.7721518987341772
Threshold: 0.14
Accuracy:  0.76949826130154

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.59it/s]
Loss: 0.47300333799199856
AUROC: 0.832828845819034
AUPRC: 0.6800323823467356
Sensitivity: 0.7579821200510856
Specificity: 0.7561756633119854
Threshold: 0.13
Accuracy:  0.7566520714045133

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0078.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.51it/s]
Loss: 0.59372279047966
AUROC: 0.8473064081237313
AUPRC: 0.7120371468830128
Sensitivity: 0.7631133671742809
Specificity: 0.7672292545710268
Threshold: 0.07
Accuracy:  0.7660208643815202

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.53it/s]
Loss: 0.5596642912702358
AUROC: 0.8368834414753586
AUPRC: 0.6846415600965466
Sensitivity: 0.7445721583652618
Specificity: 0.7728728270814272
Threshold: 0.07
Accuracy:  0.7654092286965308

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0079.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.56it/s]
Loss: 0.5425392929464579
AUROC: 0.8505370049095552
AUPRC: 0.7178875443227878
Sensitivity: 0.7732656514382402
Specificity: 0.7552742616033755
Threshold: 0.11
Accuracy:  0.7605563835072032

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:17<00:00,  2.61it/s]
Loss: 0.5123878787172601
AUROC: 0.8386989538675818
AUPRC: 0.6903217476808967
Sensitivity: 0.7515964240102171
Specificity: 0.7607502287282708
Threshold: 0.11
Accuracy:  0.7583361401145167

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0080.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.58it/s]
Loss: 0.4713689312338829
AUROC: 0.8515591347950148
AUPRC: 0.7178634541562618
Sensitivity: 0.7580372250423012
Specificity: 0.7714486638537271
Threshold: 0.18
Accuracy:  0.767511177347243

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.53it/s]
Loss: 0.45129366092225337
AUROC: 0.8383547660194505
AUPRC: 0.6874278757289641
Sensitivity: 0.7484035759897829
Specificity: 0.7616651418115279
Threshold: 0.17
Accuracy:  0.7581677332435164

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0081.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.54it/s]
Loss: 0.4673234950751066
AUROC: 0.8500658018424516
AUPRC: 0.7142475883247605
Sensitivity: 0.7563451776649747
Specificity: 0.7651195499296765
Threshold: 0.2
Accuracy:  0.7625434674615003

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.49it/s]
Loss: 0.4469503985440477
AUROC: 0.8398285735652048
AUPRC: 0.6874889796650958
Sensitivity: 0.7637292464878672
Specificity: 0.7477127172918573
Threshold: 0.19
Accuracy:  0.7519366790165039

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0082.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.52it/s]
Loss: 0.5041850600391626
AUROC: 0.8496350556043418
AUPRC: 0.7153987683081835
Sensitivity: 0.7631133671742809
Specificity: 0.7651195499296765
Threshold: 0.18
Accuracy:  0.7645305514157973

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.54it/s]
Loss: 0.47605402006747877
AUROC: 0.8394718976792991
AUPRC: 0.6859331463029886
Sensitivity: 0.7694763729246488
Specificity: 0.7458828911253431
Threshold: 0.17
Accuracy:  0.7521050858875042

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0083.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.51it/s]
Loss: 0.47364526242017746
AUROC: 0.8494184925785516
AUPRC: 0.7136641370408904
Sensitivity: 0.7597292724196277
Specificity: 0.7672292545710268
Threshold: 0.2
Accuracy:  0.7650273224043715

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.53it/s]
Loss: 0.4516683040147132
AUROC: 0.8388342044287402
AUPRC: 0.6903926591079022
Sensitivity: 0.7401021711366539
Specificity: 0.7781335773101555
Threshold: 0.2
Accuracy:  0.7681037386325362


Plot AUROC/AUPRC for Each Intermediate Model
  Epoch with best Validation Loss:      63, 0.4436
  Epoch with best model Test AUROC:     81, 0.8398
  Epoch with best model Test Accuracy:  83, 0.7681

AUROC/AUPRC Plots - Best Model Based on Validation Loss
  Epoch with best Validation Loss:   63, 0.4436
  Best Model Based on Validation Loss:
    ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0063.model

Generate Stats Based on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.58it/s]
Loss: 0.42814125627913374
AUROC: 0.8333041215490659
AUPRC: 0.6830001844856806
Sensitivity: 0.7573435504469987
Specificity: 0.7602927721866423
Threshold: 0.26
Accuracy:  0.7595149882115191
best_model_val_test_auroc: 0.8333041215490659
best_model_val_test_auprc: 0.6830001844856806

AUROC/AUPRC Plots - Best Model Based on Model AUROC
  Epoch with best model Test AUROC:  81, 0.8398
  Best Model Based on Model AUROC:
    ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_a25c1edf_0081.model

Generate Stats Based on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.59it/s]
Loss: 0.4469503985440477
AUROC: 0.8398285735652048
AUPRC: 0.6874889796650958
Sensitivity: 0.7637292464878672
Specificity: 0.7477127172918573
Threshold: 0.19
Accuracy:  0.7519366790165039
best_model_auroc_test_auroc: 0.8398285735652048
best_model_auroc_test_auprc: 0.6874889796650958

Total Processing Time: 6828.8980 sec
In [105]:
RUN_ME = True

if MULTI_RUN and RUN_ME:
    run_experiment(
        experimentNamePrefix=None, 
        useAbp=False, 
        useEeg=True, 
        useEcg=True,
        nResiduals=12, 
        skip_connection=False,
        batch_size=128,
        learning_rate=1e-4,
        weight_decay=1e-1,
        balance_labels=False,
        #pos_weight=2.0,
        pos_weight=None,
        max_epochs=200,
        patience=20,
        device=device
    )
Experiment Setup
  name:              EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca
  prediction_window: 003
  max_cases:         _ALL
  use_abp:           False
  use_eeg:           True
  use_ecg:           True
  n_residuals:       12
  skip_connection:   False
  batch_size:        128
  learning_rate:     0.0001
  weight_decay:      0.1
  balance_labels:    False
  max_epochs:        200
  patience:          20
  device:            mps

Model Architecture
HypotensionCNN(
  (ecgResiduals): Sequential(
    (0): ResidualBlock(
      (bn1): BatchNorm1d(1, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (1): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (2): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (3): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (4): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (5): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (6): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (7): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (8): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=1, dilation=1, ceil_mode=False)
    )
    (9): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (10): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (11): ResidualBlock(
      (bn1): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
  )
  (ecgFc): Linear(in_features=2814, out_features=32, bias=True)
  (eegResiduals): Sequential(
    (0): ResidualBlock(
      (bn1): BatchNorm1d(1, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(1, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(1, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (1): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (2): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (3): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (4): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (5): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(2, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (6): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (7): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
    )
    (8): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (9): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
    )
    (10): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(4, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (11): ResidualBlock(
      (bn1): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(6, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(6, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
    )
  )
  (eegFc): Linear(in_features=720, out_features=32, bias=True)
  (fullLinear1): Linear(in_features=64, out_features=16, bias=True)
  (fullLinear2): Linear(in_features=16, out_features=1, bias=True)
  (sigmoid): Sigmoid()
)

Training Loop
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.96it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.58it/s]
[2024-05-04 19:58:17.687092] Completed epoch 0 with training loss 0.60025579, validation loss 0.60747939
Validation loss improved to 0.60747939. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.95it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.57it/s]
[2024-05-04 19:59:11.277461] Completed epoch 1 with training loss 0.59399968, validation loss 0.60779661
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.93it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.43it/s]
[2024-05-04 20:00:05.535460] Completed epoch 2 with training loss 0.59244698, validation loss 0.60709894
Validation loss improved to 0.60709894. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.93it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.56it/s]
[2024-05-04 20:00:59.498184] Completed epoch 3 with training loss 0.59221613, validation loss 0.60614812
Validation loss improved to 0.60614812. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.95it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.56it/s]
[2024-05-04 20:01:53.062518] Completed epoch 4 with training loss 0.59213573, validation loss 0.60361862
Validation loss improved to 0.60361862. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.95it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.57it/s]
[2024-05-04 20:02:46.501024] Completed epoch 5 with training loss 0.59097391, validation loss 0.60647815
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.95it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.60it/s]
[2024-05-04 20:03:39.851374] Completed epoch 6 with training loss 0.59050637, validation loss 0.60401475
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.98it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.58it/s]
[2024-05-04 20:04:32.662405] Completed epoch 7 with training loss 0.58959270, validation loss 0.60314077
Validation loss improved to 0.60314077. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.98it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.59it/s]
[2024-05-04 20:05:25.432863] Completed epoch 8 with training loss 0.58976370, validation loss 0.60298884
Validation loss improved to 0.60298884. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.98it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.57it/s]
[2024-05-04 20:06:18.273354] Completed epoch 9 with training loss 0.58907872, validation loss 0.60290110
Validation loss improved to 0.60290110. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.95it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.56it/s]
[2024-05-04 20:07:11.716505] Completed epoch 10 with training loss 0.58825725, validation loss 0.60377103
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.92it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.56it/s]
[2024-05-04 20:08:05.859190] Completed epoch 11 with training loss 0.58871311, validation loss 0.60258400
Validation loss improved to 0.60258400. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.92it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.51it/s]
[2024-05-04 20:09:00.239009] Completed epoch 12 with training loss 0.58710349, validation loss 0.60288942
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.94it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.58it/s]
[2024-05-04 20:09:53.971312] Completed epoch 13 with training loss 0.58737785, validation loss 0.60283065
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.98it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.62it/s]
[2024-05-04 20:10:46.640592] Completed epoch 14 with training loss 0.58728939, validation loss 0.60240752
Validation loss improved to 0.60240752. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.98it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.60it/s]
[2024-05-04 20:11:39.342308] Completed epoch 15 with training loss 0.58643878, validation loss 0.60391492
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.98it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.62it/s]
[2024-05-04 20:12:31.950274] Completed epoch 16 with training loss 0.58674508, validation loss 0.60254502
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.97it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.56it/s]
[2024-05-04 20:13:25.021069] Completed epoch 17 with training loss 0.58589345, validation loss 0.60392892
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.96it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
[2024-05-04 20:14:18.361323] Completed epoch 18 with training loss 0.58619076, validation loss 0.60330999
No improvement in validation loss. 4 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.94it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.62it/s]
[2024-05-04 20:15:11.871066] Completed epoch 19 with training loss 0.58695316, validation loss 0.60158616
Validation loss improved to 0.60158616. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.96it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.60it/s]
[2024-05-04 20:16:04.999103] Completed epoch 20 with training loss 0.58541870, validation loss 0.60270667
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.98it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.51it/s]
[2024-05-04 20:16:57.998336] Completed epoch 21 with training loss 0.58514112, validation loss 0.60149813
Validation loss improved to 0.60149813. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.95it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.57it/s]
[2024-05-04 20:17:51.484389] Completed epoch 22 with training loss 0.58518928, validation loss 0.60271221
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.95it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.62it/s]
[2024-05-04 20:18:44.820500] Completed epoch 23 with training loss 0.58460784, validation loss 0.60048121
Validation loss improved to 0.60048121. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.96it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.60it/s]
[2024-05-04 20:19:38.038714] Completed epoch 24 with training loss 0.58372384, validation loss 0.60111296
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.97it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.58it/s]
[2024-05-04 20:20:31.087387] Completed epoch 25 with training loss 0.58267862, validation loss 0.60015345
Validation loss improved to 0.60015345. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.95it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.55it/s]
[2024-05-04 20:21:24.554893] Completed epoch 26 with training loss 0.58339739, validation loss 0.59820455
Validation loss improved to 0.59820455. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.95it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.46it/s]
[2024-05-04 20:22:18.420485] Completed epoch 27 with training loss 0.58247298, validation loss 0.59907389
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.96it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.58it/s]
[2024-05-04 20:23:11.629121] Completed epoch 28 with training loss 0.58295965, validation loss 0.60341251
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.92it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.44it/s]
[2024-05-04 20:24:06.177652] Completed epoch 29 with training loss 0.58188909, validation loss 0.60818040
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.93it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.46it/s]
[2024-05-04 20:25:00.405062] Completed epoch 30 with training loss 0.58179510, validation loss 0.61468989
No improvement in validation loss. 4 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.92it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
[2024-05-04 20:25:54.800905] Completed epoch 31 with training loss 0.58112949, validation loss 0.62274528
No improvement in validation loss. 5 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:48<00:00,  1.91it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
[2024-05-04 20:26:49.377524] Completed epoch 32 with training loss 0.58129728, validation loss 0.61972725
No improvement in validation loss. 6 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:48<00:00,  1.91it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.54it/s]
[2024-05-04 20:27:43.865990] Completed epoch 33 with training loss 0.57934701, validation loss 0.62235749
No improvement in validation loss. 7 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.95it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
[2024-05-04 20:28:37.545708] Completed epoch 34 with training loss 0.57891387, validation loss 0.62377405
No improvement in validation loss. 8 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.96it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.54it/s]
[2024-05-04 20:29:30.937885] Completed epoch 35 with training loss 0.57959670, validation loss 0.62498605
No improvement in validation loss. 9 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.95it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.60it/s]
[2024-05-04 20:30:24.369781] Completed epoch 36 with training loss 0.57965028, validation loss 0.62414944
No improvement in validation loss. 10 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.93it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.56it/s]
[2024-05-04 20:31:18.416929] Completed epoch 37 with training loss 0.57858264, validation loss 0.62437165
No improvement in validation loss. 11 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.97it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.56it/s]
[2024-05-04 20:32:11.375470] Completed epoch 38 with training loss 0.57818973, validation loss 0.62349784
No improvement in validation loss. 12 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.96it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.63it/s]
[2024-05-04 20:33:04.357570] Completed epoch 39 with training loss 0.57721061, validation loss 0.62689149
No improvement in validation loss. 13 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.97it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.62it/s]
[2024-05-04 20:33:57.324494] Completed epoch 40 with training loss 0.57643354, validation loss 0.62371629
No improvement in validation loss. 14 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.96it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.58it/s]
[2024-05-04 20:34:50.453550] Completed epoch 41 with training loss 0.57779157, validation loss 0.62294090
No improvement in validation loss. 15 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.95it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.54it/s]
[2024-05-04 20:35:43.880983] Completed epoch 42 with training loss 0.57695603, validation loss 0.62019694
No improvement in validation loss. 16 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.96it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.57it/s]
[2024-05-04 20:36:37.056402] Completed epoch 43 with training loss 0.57629156, validation loss 0.62082624
No improvement in validation loss. 17 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.97it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.56it/s]
[2024-05-04 20:37:30.170926] Completed epoch 44 with training loss 0.57750672, validation loss 0.62310326
No improvement in validation loss. 18 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.96it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.52it/s]
[2024-05-04 20:38:23.460085] Completed epoch 45 with training loss 0.57718146, validation loss 0.62739325
No improvement in validation loss. 19 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.95it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.57it/s]
[2024-05-04 20:39:16.864807] Completed epoch 46 with training loss 0.57659715, validation loss 0.62300110
No improvement in validation loss. 20 epochs without improvement.
Early stopping due to no improvement in validation loss.

Plot Validation and Loss Values from Training
  Epoch with best Validation Loss:   26, 0.5982
Generate AUROC/AUPRC for Each Intermediate Model

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0000.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.63it/s]
Loss: 0.6065437570214272
AUROC: 0.5276950792596876
AUPRC: 0.31745586791093733
Sensitivity: 0.5346869712351946
Specificity: 0.4739803094233474
Threshold: 0.33
Accuracy:  0.4918032786885246

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.50it/s]
Loss: 0.5893477835553758
AUROC: 0.5212721673624914
AUPRC: 0.28044039730206094
Sensitivity: 0.5038314176245211
Specificity: 0.5333943275388838
Threshold: 0.34
Accuracy:  0.5255978443920512

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0001.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.54it/s]
Loss: 0.6070725545287132
AUROC: 0.5291574746371379
AUPRC: 0.3184701468906669
Sensitivity: 0.5465313028764806
Specificity: 0.4711673699015471
Threshold: 0.33
Accuracy:  0.4932935916542474

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.54it/s]
Loss: 0.5888410952497036
AUROC: 0.5227658389215477
AUPRC: 0.2815296848808533
Sensitivity: 0.508301404853129
Specificity: 0.5333943275388838
Threshold: 0.34
Accuracy:  0.5267766924890536

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0002.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.44it/s]
Loss: 0.6066869981586933
AUROC: 0.5306049961803994
AUPRC: 0.32002247641120246
Sensitivity: 0.4686971235194585
Specificity: 0.5485232067510548
Threshold: 0.34
Accuracy:  0.5250869349230005

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.51it/s]
Loss: 0.5887066068801474
AUROC: 0.5240012052782188
AUPRC: 0.28390086457087754
Sensitivity: 0.5197956577266922
Specificity: 0.5258462946020128
Threshold: 0.34
Accuracy:  0.5242505894240485

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0003.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.55it/s]
Loss: 0.6063789762556553
AUROC: 0.5321536597961452
AUPRC: 0.3210692224462021
Sensitivity: 0.505922165820643
Specificity: 0.5189873417721519
Threshold: 0.33
Accuracy:  0.5151515151515151

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.51it/s]
Loss: 0.5863878536731639
AUROC: 0.5257043983599337
AUPRC: 0.28366052660309043
Sensitivity: 0.5561941251596424
Specificity: 0.4892497712717292
Threshold: 0.33
Accuracy:  0.5069046817110138

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0004.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
Loss: 0.6041884124279022
AUROC: 0.534452559608378
AUPRC: 0.3223466613071043
Sensitivity: 0.5329949238578681
Specificity: 0.4978902953586498
Threshold: 0.32
Accuracy:  0.5081967213114754

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.55it/s]
Loss: 0.584435927741071
AUROC: 0.5270623811810675
AUPRC: 0.28483009610240123
Sensitivity: 0.48084291187739464
Specificity: 0.5661024702653248
Threshold: 0.33
Accuracy:  0.5436173795890872

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0005.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.54it/s]
Loss: 0.6048824824392796
AUROC: 0.5358596243226456
AUPRC: 0.3233364617344099
Sensitivity: 0.4957698815566836
Specificity: 0.5309423347398031
Threshold: 0.33
Accuracy:  0.5206159960258321

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.56it/s]
Loss: 0.5854966596085974
AUROC: 0.5283879389216646
AUPRC: 0.28565199514104495
Sensitivity: 0.5466155810983397
Specificity: 0.5061756633119854
Threshold: 0.33
Accuracy:  0.5168406871000337

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0006.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.54it/s]
Loss: 0.6054123118519783
AUROC: 0.537626635824284
AUPRC: 0.3237632907351726
Sensitivity: 0.571912013536379
Specificity: 0.48523206751054854
Threshold: 0.32
Accuracy:  0.5106805762543467

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.55it/s]
Loss: 0.5840925016301743
AUROC: 0.5295191652674222
AUPRC: 0.28610574678746115
Sensitivity: 0.4846743295019157
Specificity: 0.5729643183897529
Threshold: 0.33
Accuracy:  0.5496800269450993

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0007.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.58it/s]
Loss: 0.6029720082879066
AUROC: 0.5403021411181792
AUPRC: 0.3245601478684046
Sensitivity: 0.5076142131979695
Specificity: 0.5239099859353024
Threshold: 0.32
Accuracy:  0.5191256830601093

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.45it/s]
Loss: 0.5827983567055236
AUROC: 0.530967996737628
AUPRC: 0.2866822137564903
Sensitivity: 0.5517241379310345
Specificity: 0.4993138151875572
Threshold: 0.32
Accuracy:  0.5131357359380263

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0008.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.12it/s]
Loss: 0.6051176637411118
AUROC: 0.5435511814583973
AUPRC: 0.3250691034499352
Sensitivity: 0.4467005076142132
Specificity: 0.5921237693389592
Threshold: 0.33
Accuracy:  0.5494287133631396

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.36it/s]
Loss: 0.583933617840422
AUROC: 0.5326295630267615
AUPRC: 0.2873540475018209
Sensitivity: 0.4891443167305236
Specificity: 0.5752516010978957
Threshold: 0.33
Accuracy:  0.5525429437521051

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0009.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.19it/s]
Loss: 0.6035983078181744
AUROC: 0.5467924874048372
AUPRC: 0.32615770692384133
Sensitivity: 0.6125211505922166
Specificity: 0.459915611814346
Threshold: 0.32
Accuracy:  0.5047193243914555

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.26it/s]
Loss: 0.583611398301226
AUROC: 0.5342365763087755
AUPRC: 0.2880027813135658
Sensitivity: 0.47126436781609193
Specificity: 0.5937785910338518
Threshold: 0.33
Accuracy:  0.5614685079151229

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0010.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.16it/s]
Loss: 0.6031000204384327
AUROC: 0.5504722739831652
AUPRC: 0.3256106337340008
Sensitivity: 0.5380710659898477
Specificity: 0.5386779184247539
Threshold: 0.33
Accuracy:  0.5384997516145057

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.37it/s]
Loss: 0.5846588776466695
AUROC: 0.5363182080556754
AUPRC: 0.2889753434730964
Sensitivity: 0.5395913154533845
Specificity: 0.5146386093321135
Threshold: 0.33
Accuracy:  0.5212192657460425

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0011.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.30it/s]
Loss: 0.6018081344664097
AUROC: 0.5543936116287205
AUPRC: 0.3268362065325061
Sensitivity: 0.49746192893401014
Specificity: 0.580168776371308
Threshold: 0.32
Accuracy:  0.555886736214605

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.25it/s]
Loss: 0.5812210871818217
AUROC: 0.5384991598690845
AUPRC: 0.29110419027970985
Sensitivity: 0.5012771392081737
Specificity: 0.5647301006404392
Threshold: 0.32
Accuracy:  0.547995958235096

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0012.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.13it/s]
Loss: 0.6044513359665871
AUROC: 0.5566139775964359
AUPRC: 0.3279885562370717
Sensitivity: 0.6159052453468697
Specificity: 0.46272855133614627
Threshold: 0.33
Accuracy:  0.5076999503229012

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:22<00:00,  2.14it/s]
Loss: 0.5857719201990899
AUROC: 0.5399570469924131
AUPRC: 0.2924253267592767
Sensitivity: 0.6289910600255428
Specificity: 0.42291857273559014
Threshold: 0.33
Accuracy:  0.4772650724149545

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0013.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.21it/s]
Loss: 0.6018449328839779
AUROC: 0.5642139119135843
AUPRC: 0.3312458627300741
Sensitivity: 0.5160744500846024
Specificity: 0.5668073136427567
Threshold: 0.33
Accuracy:  0.5519125683060109

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.17it/s]
Loss: 0.5838328650657166
AUROC: 0.5436438662848102
AUPRC: 0.2939638428702403
Sensitivity: 0.5223499361430396
Specificity: 0.547804208600183
Threshold: 0.33
Accuracy:  0.5410912765240822

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0014.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.11it/s]
Loss: 0.6031850539147854
AUROC: 0.5693917910714158
AUPRC: 0.33404439339135805
Sensitivity: 0.4805414551607445
Specificity: 0.59985935302391
Threshold: 0.33
Accuracy:  0.5648286140089419

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.17it/s]
Loss: 0.5832999500822513
AUROC: 0.5455771751970919
AUPRC: 0.29336461401769787
Sensitivity: 0.5095785440613027
Specificity: 0.581427264409881
Threshold: 0.33
Accuracy:  0.562478949141125

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0015.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.14it/s]
Loss: 0.6030019745230675
AUROC: 0.5727211501162539
AUPRC: 0.3300873789153477
Sensitivity: 0.5972927241962775
Specificity: 0.5232067510548524
Threshold: 0.33
Accuracy:  0.5449577744659712

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:22<00:00,  2.12it/s]
Loss: 0.5845052460406689
AUROC: 0.546562634739355
AUPRC: 0.29314977278138327
Sensitivity: 0.60727969348659
Specificity: 0.4794144556267155
Threshold: 0.33
Accuracy:  0.5131357359380263

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0016.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.19it/s]
Loss: 0.6045225076377392
AUROC: 0.5764824453059368
AUPRC: 0.3316976425459879
Sensitivity: 0.6345177664974619
Specificity: 0.509142053445851
Threshold: 0.33
Accuracy:  0.5459513164431197

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.22it/s]
Loss: 0.5848336080287365
AUROC: 0.546808597962887
AUPRC: 0.2949065108217134
Sensitivity: 0.6283524904214559
Specificity: 0.444647758462946
Threshold: 0.33
Accuracy:  0.4930953182889862

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0017.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.09it/s]
Loss: 0.6037724316120148
AUROC: 0.5800170632625814
AUPRC: 0.33698214048104747
Sensitivity: 0.5109983079526227
Specificity: 0.5921237693389592
Threshold: 0.34
Accuracy:  0.5683060109289617

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:22<00:00,  2.13it/s]
Loss: 0.5864381701388257
AUROC: 0.5460083411328798
AUPRC: 0.29666455650465257
Sensitivity: 0.5274584929757343
Specificity: 0.5416285452881976
Threshold: 0.34
Accuracy:  0.5378915459750758

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0018.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.19it/s]
Loss: 0.6017580516636372
AUROC: 0.5818608237486346
AUPRC: 0.3416454008200897
Sensitivity: 0.5989847715736041
Specificity: 0.5154711673699015
Threshold: 0.33
Accuracy:  0.5399900645802285

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:22<00:00,  2.14it/s]
Loss: 0.584633563427215
AUROC: 0.545555558476734
AUPRC: 0.296237509392864
Sensitivity: 0.6264367816091954
Specificity: 0.44602012808783165
Threshold: 0.33
Accuracy:  0.4936005389019872

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0019.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.13it/s]
Loss: 0.6015244424343109
AUROC: 0.5829257902765581
AUPRC: 0.3461610772819561
Sensitivity: 0.5549915397631133
Specificity: 0.5689170182841069
Threshold: 0.33
Accuracy:  0.5648286140089419

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:22<00:00,  2.13it/s]
Loss: 0.5837440883859675
AUROC: 0.5440919750554732
AUPRC: 0.29550799767161684
Sensitivity: 0.5740740740740741
Specificity: 0.5004574565416285
Threshold: 0.33
Accuracy:  0.5198720107780398

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0020.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.14it/s]
Loss: 0.6026439890265465
AUROC: 0.5826723401419797
AUPRC: 0.3490645951308656
Sensitivity: 0.6412859560067682
Specificity: 0.48523206751054854
Threshold: 0.33
Accuracy:  0.5310481867858917

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.22it/s]
Loss: 0.5851036449696155
AUROC: 0.5436057449063412
AUPRC: 0.29540682509748173
Sensitivity: 0.46871008939974457
Specificity: 0.6052150045745655
Threshold: 0.34
Accuracy:  0.5692152239811384

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0021.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.21it/s]
Loss: 0.6020423658192158
AUROC: 0.5820464491993118
AUPRC: 0.35093285072069524
Sensitivity: 0.5820642978003384
Specificity: 0.5358649789029536
Threshold: 0.33
Accuracy:  0.5494287133631396

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.32it/s]
Loss: 0.5841682426472927
AUROC: 0.5428620128788915
AUPRC: 0.29568065349869693
Sensitivity: 0.603448275862069
Specificity: 0.46363220494053065
Threshold: 0.33
Accuracy:  0.500505220613001

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0022.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.27it/s]
Loss: 0.6023005768656731
AUROC: 0.5810873843708131
AUPRC: 0.35119089840974893
Sensitivity: 0.5482233502538071
Specificity: 0.5942334739803095
Threshold: 0.34
Accuracy:  0.5807252856433184

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.25it/s]
Loss: 0.5859310436756053
AUROC: 0.5426359866981219
AUPRC: 0.29567607806776935
Sensitivity: 0.5466155810983397
Specificity: 0.5185269899359561
Threshold: 0.34
Accuracy:  0.5259346581340518

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0023.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.25it/s]
Loss: 0.6004691310226917
AUROC: 0.5832125577997196
AUPRC: 0.35214340692810586
Sensitivity: 0.5871404399323181
Specificity: 0.5189873417721519
Threshold: 0.33
Accuracy:  0.53899652260308

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.25it/s]
Loss: 0.5837954688579479
AUROC: 0.5460616526391678
AUPRC: 0.29813919532883704
Sensitivity: 0.48531289910600256
Specificity: 0.5789112534309241
Threshold: 0.34
Accuracy:  0.5542270124621085

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0024.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.27it/s]
Loss: 0.6003066003322601
AUROC: 0.5845607221305994
AUPRC: 0.35156464260834513
Sensitivity: 0.5346869712351946
Specificity: 0.5836849507735584
Threshold: 0.34
Accuracy:  0.5692995529061102

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.26it/s]
Loss: 0.5845858163021981
AUROC: 0.5509249035134766
AUPRC: 0.30096092678109326
Sensitivity: 0.5561941251596424
Specificity: 0.5217291857273559
Threshold: 0.34
Accuracy:  0.5308184573930617

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0025.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.28it/s]
Loss: 0.600253164768219
AUROC: 0.5879352976313716
AUPRC: 0.3505096027506027
Sensitivity: 0.5499153976311336
Specificity: 0.5646976090014064
Threshold: 0.34
Accuracy:  0.5603576751117735

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.34it/s]
Loss: 0.5844876220885743
AUROC: 0.5569924832236723
AUPRC: 0.30368202432751357
Sensitivity: 0.5893997445721584
Specificity: 0.5057182067703568
Threshold: 0.34
Accuracy:  0.5277871337150556

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0026.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.22it/s]
Loss: 0.5981189534068108
AUROC: 0.5911754136710765
AUPRC: 0.3498544324662583
Sensitivity: 0.544839255499154
Specificity: 0.569620253164557
Threshold: 0.34
Accuracy:  0.5623447590660705

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.26it/s]
Loss: 0.5833910545136066
AUROC: 0.5634548601982428
AUPRC: 0.30610949801108894
Sensitivity: 0.5932311621966795
Specificity: 0.5166971637694419
Threshold: 0.34
Accuracy:  0.5368811047490738

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0027.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.25it/s]
Loss: 0.5982272773981094
AUROC: 0.5923415222714844
AUPRC: 0.3525838913218174
Sensitivity: 0.5939086294416244
Specificity: 0.5246132208157525
Threshold: 0.33
Accuracy:  0.5449577744659712

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.26it/s]
Loss: 0.5819512396416766
AUROC: 0.5638503147277637
AUPRC: 0.3080443211175935
Sensitivity: 0.5491698595146871
Specificity: 0.5587831655992681
Threshold: 0.34
Accuracy:  0.5562478949141125

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0028.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.19it/s]
Loss: 0.6028979159891605
AUROC: 0.5952383502181099
AUPRC: 0.3516119029537316
Sensitivity: 0.5922165820642978
Specificity: 0.5358649789029536
Threshold: 0.36
Accuracy:  0.5524093392945852

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.29it/s]
Loss: 0.5915180875899944
AUROC: 0.5675622561546309
AUPRC: 0.3066726646884652
Sensitivity: 0.5395913154533845
Specificity: 0.5697621225983531
Threshold: 0.37
Accuracy:  0.5618053216571236

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0029.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.42it/s]
Loss: 0.6069830171763897
AUROC: 0.5943268816590156
AUPRC: 0.35129505833450647
Sensitivity: 0.5329949238578681
Specificity: 0.5822784810126582
Threshold: 0.38
Accuracy:  0.5678092399403875

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.44it/s]
Loss: 0.5977704131856878
AUROC: 0.5676893274161944
AUPRC: 0.30883437514003986
Sensitivity: 0.5804597701149425
Specificity: 0.5265324794144556
Threshold: 0.38
Accuracy:  0.5407544627820815

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0030.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
Loss: 0.6142424456775188
AUROC: 0.588068567185704
AUPRC: 0.3495005749440674
Sensitivity: 0.6649746192893401
Specificity: 0.4964838255977497
Threshold: 0.39
Accuracy:  0.5459513164431197

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.50it/s]
Loss: 0.6064323237601746
AUROC: 0.5640237596968518
AUPRC: 0.3041735383763364
Sensitivity: 0.6590038314176245
Specificity: 0.4364135407136322
Threshold: 0.39
Accuracy:  0.4951162007409902

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0031.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.51it/s]
Loss: 0.6231278069317341
AUROC: 0.581465774712578
AUPRC: 0.33637879382182145
Sensitivity: 0.6869712351945855
Specificity: 0.4542897327707454
Threshold: 0.4
Accuracy:  0.5226030799801291

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.54it/s]
Loss: 0.6138635100202358
AUROC: 0.5549989980357997
AUPRC: 0.3011099802008254
Sensitivity: 0.6915708812260536
Specificity: 0.3863220494053065
Threshold: 0.4
Accuracy:  0.4668238464129337

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0032.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.51it/s]
Loss: 0.6197469495236874
AUROC: 0.5792918151075318
AUPRC: 0.3318734332953569
Sensitivity: 0.6395939086294417
Specificity: 0.47749648382559773
Threshold: 0.4
Accuracy:  0.5250869349230005

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.53it/s]
Loss: 0.6122131487156482
AUROC: 0.5489790335339598
AUPRC: 0.2925943662917757
Sensitivity: 0.6590038314176245
Specificity: 0.4146843549862763
Threshold: 0.4
Accuracy:  0.47911754799595824

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0033.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
Loss: 0.6226662397384644
AUROC: 0.5785665669524822
AUPRC: 0.33362119826298
Sensitivity: 0.7411167512690355
Specificity: 0.3755274261603376
Threshold: 0.4
Accuracy:  0.4828614008941878

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.55it/s]
Loss: 0.6148918283746597
AUROC: 0.541328029057546
AUPRC: 0.2846072397242946
Sensitivity: 0.731162196679438
Specificity: 0.3119853613906679
Threshold: 0.4
Accuracy:  0.4225328393398451

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0034.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.37it/s]
Loss: 0.6227511614561081
AUROC: 0.5756929421871915
AUPRC: 0.33271954951607374
Sensitivity: 0.7478849407783418
Specificity: 0.3551336146272855
Threshold: 0.4
Accuracy:  0.4704421261798311

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.52it/s]
Loss: 0.6156679125542336
AUROC: 0.5346144307382753
AUPRC: 0.27730040443282306
Sensitivity: 0.7509578544061303
Specificity: 0.2897987191216834
Threshold: 0.4
Accuracy:  0.41141798585382283

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0035.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.44it/s]
Loss: 0.624726939946413
AUROC: 0.5730263611938096
AUPRC: 0.3277120048084773
Sensitivity: 0.5702199661590525
Specificity: 0.5492264416315049
Threshold: 0.41000000000000003
Accuracy:  0.5553899652260308

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.51it/s]
Loss: 0.6170905790430434
AUROC: 0.5318249244291141
AUPRC: 0.275472675803808
Sensitivity: 0.5932311621966795
Specificity: 0.4833028362305581
Threshold: 0.41000000000000003
Accuracy:  0.5122937015830246

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0036.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.52it/s]
Loss: 0.6245542764663696
AUROC: 0.5762206658242127
AUPRC: 0.324360394289626
Sensitivity: 0.5651438240270727
Specificity: 0.5492264416315049
Threshold: 0.41000000000000003
Accuracy:  0.553899652260308

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.51it/s]
Loss: 0.6161281567938784
AUROC: 0.5358640378397769
AUPRC: 0.27739748880488324
Sensitivity: 0.5913154533844189
Specificity: 0.48124428179322964
Threshold: 0.41000000000000003
Accuracy:  0.5102728191310205

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0037.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
Loss: 0.6240665949881077
AUROC: 0.5747344723120602
AUPRC: 0.3299824255643384
Sensitivity: 0.571912013536379
Specificity: 0.5323488045007032
Threshold: 0.41000000000000003
Accuracy:  0.5439642324888226

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.55it/s]
Loss: 0.6167746465256874
AUROC: 0.539246689428489
AUPRC: 0.28044740252568257
Sensitivity: 0.5983397190293742
Specificity: 0.4716376944190302
Threshold: 0.41000000000000003
Accuracy:  0.5050522061300101

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0038.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.54it/s]
Loss: 0.6236318238079548
AUROC: 0.5697273447707168
AUPRC: 0.31998621307509667
Sensitivity: 0.5922165820642978
Specificity: 0.5218002812939522
Threshold: 0.41000000000000003
Accuracy:  0.5424739195230999

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.54it/s]
Loss: 0.6163282140772394
AUROC: 0.5339110840025753
AUPRC: 0.2727770886046097
Sensitivity: 0.611749680715198
Specificity: 0.4581427264409881
Threshold: 0.41000000000000003
Accuracy:  0.4986527450319973

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0039.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
Loss: 0.6269209235906601
AUROC: 0.5643709796026187
AUPRC: 0.3225842083830195
Sensitivity: 0.7021996615905245
Specificity: 0.4050632911392405
Threshold: 0.41000000000000003
Accuracy:  0.49230004967709884

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.51it/s]
Loss: 0.6198731495978984
AUROC: 0.5258769669754937
AUPRC: 0.27115962378574476
Sensitivity: 0.7120051085568327
Specificity: 0.33783165599268067
Threshold: 0.41000000000000003
Accuracy:  0.436510609632873

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0040.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
Loss: 0.6244532838463783
AUROC: 0.5909410020442598
AUPRC: 0.34408085946685163
Sensitivity: 0.6818950930626058
Specificity: 0.4451476793248945
Threshold: 0.41000000000000003
Accuracy:  0.5146547441629409

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.55it/s]
Loss: 0.6177826714008412
AUROC: 0.5563563966212481
AUPRC: 0.29576588892334105
Sensitivity: 0.6909323116219668
Specificity: 0.39364135407136325
Threshold: 0.41000000000000003
Accuracy:  0.4720444594139441

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0041.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
Loss: 0.623725164681673
AUROC: 0.5966828969945336
AUPRC: 0.3481182933947363
Sensitivity: 0.6734348561759729
Specificity: 0.4613220815752461
Threshold: 0.41000000000000003
Accuracy:  0.5235966219572777

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.53it/s]
Loss: 0.6164971602723953
AUROC: 0.5643550943599056
AUPRC: 0.3036299599270308
Sensitivity: 0.6749680715197957
Specificity: 0.4087374199451052
Threshold: 0.41000000000000003
Accuracy:  0.4789491411249579

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0042.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.51it/s]
Loss: 0.6210455931723118
AUROC: 0.5947945150059138
AUPRC: 0.34653610517690636
Sensitivity: 0.6209813874788495
Specificity: 0.49859353023909986
Threshold: 0.41000000000000003
Accuracy:  0.5345255837059115

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.54it/s]
Loss: 0.6146052073925099
AUROC: 0.5621877260261808
AUPRC: 0.30047944137743976
Sensitivity: 0.640485312899106
Specificity: 0.4487648673376029
Threshold: 0.41000000000000003
Accuracy:  0.49932637251599865

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0043.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
Loss: 0.6194043830037117
AUROC: 0.5969982222793377
AUPRC: 0.34933196054745513
Sensitivity: 0.6328257191201354
Specificity: 0.4964838255977497
Threshold: 0.41000000000000003
Accuracy:  0.5365126676602087

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.46it/s]
Loss: 0.6145604531815712
AUROC: 0.5606546185583634
AUPRC: 0.3004014057461008
Sensitivity: 0.640485312899106
Specificity: 0.44853613906678863
Threshold: 0.41000000000000003
Accuracy:  0.4991579656449983

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0044.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.36it/s]
Loss: 0.6234616637229919
AUROC: 0.5947641723841686
AUPRC: 0.35264191943154355
Sensitivity: 0.6920473773265652
Specificity: 0.44866385372714485
Threshold: 0.41000000000000003
Accuracy:  0.5201192250372578

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.48it/s]
Loss: 0.6170263937179078
AUROC: 0.5585698465446549
AUPRC: 0.299750406902028
Sensitivity: 0.69029374201788
Specificity: 0.39249771271729184
Threshold: 0.41000000000000003
Accuracy:  0.47103401818794205

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0045.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
Loss: 0.6274923235177994
AUROC: 0.5809088983605465
AUPRC: 0.32901847070543855
Sensitivity: 0.7749576988155669
Specificity: 0.34528832630098455
Threshold: 0.41000000000000003
Accuracy:  0.4714356681569796

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.44it/s]
Loss: 0.6204267232976062
AUROC: 0.5472716047435264
AUPRC: 0.28748174099542123
Sensitivity: 0.7611749680715197
Specificity: 0.297804208600183
Threshold: 0.41000000000000003
Accuracy:  0.42000673627484003

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0046.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.46it/s]
Loss: 0.6232216134667397
AUROC: 0.5977151410872416
AUPRC: 0.3451307599737998
Sensitivity: 0.6988155668358714
Specificity: 0.4430379746835443
Threshold: 0.41000000000000003
Accuracy:  0.5181321410829608

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.52it/s]
Loss: 0.6167887297082455
AUROC: 0.5567768272263177
AUPRC: 0.299057224642056
Sensitivity: 0.6845466155810983
Specificity: 0.4039341262580055
Threshold: 0.41000000000000003
Accuracy:  0.4779386998989559


Plot AUROC/AUPRC for Each Intermediate Model
  Epoch with best Validation Loss:      26, 0.5982
  Epoch with best model Test AUROC:     29, 0.5677
  Epoch with best model Test Accuracy:  20, 0.5692

AUROC/AUPRC Plots - Best Model Based on Validation Loss
  Epoch with best Validation Loss:   26, 0.5982
  Best Model Based on Validation Loss:
    ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0026.model

Generate Stats Based on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.39it/s]
Loss: 0.5833910545136066
AUROC: 0.5634548601982428
AUPRC: 0.30610949801108894
Sensitivity: 0.5932311621966795
Specificity: 0.5166971637694419
Threshold: 0.34
Accuracy:  0.5368811047490738
best_model_val_test_auroc: 0.5634548601982428
best_model_val_test_auprc: 0.30610949801108894

AUROC/AUPRC Plots - Best Model Based on Model AUROC
  Epoch with best model Test AUROC:  29, 0.5677
  Best Model Based on Model AUROC:
    ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_24df69ca_0029.model

Generate Stats Based on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.43it/s]
Loss: 0.5977704131856878
AUROC: 0.5676893274161944
AUPRC: 0.30883437514003986
Sensitivity: 0.5804597701149425
Specificity: 0.5265324794144556
Threshold: 0.38
Accuracy:  0.5407544627820815
best_model_auroc_test_auroc: 0.5676893274161944
best_model_auroc_test_auprc: 0.30883437514003986

Total Processing Time: 3849.6710 sec
In [106]:
RUN_ME = True

if MULTI_RUN and RUN_ME:
    run_experiment(
        experimentNamePrefix=None, 
        useAbp=True, 
        useEeg=True, 
        useEcg=True,
        nResiduals=12, 
        skip_connection=False,
        batch_size=128,
        learning_rate=1e-4,
        weight_decay=1e-1,
        balance_labels=False,
        #pos_weight=2.0,
        pos_weight=None,
        max_epochs=200,
        patience=20,
        device=device
    )
Experiment Setup
  name:              ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31
  prediction_window: 003
  max_cases:         _ALL
  use_abp:           True
  use_eeg:           True
  use_ecg:           True
  n_residuals:       12
  skip_connection:   False
  batch_size:        128
  learning_rate:     0.0001
  weight_decay:      0.1
  balance_labels:    False
  max_epochs:        200
  patience:          20
  device:            mps

Model Architecture
HypotensionCNN(
  (abpResiduals): Sequential(
    (0): ResidualBlock(
      (bn1): BatchNorm1d(1, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (1): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (2): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (3): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (4): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (5): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (6): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (7): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (8): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=1, dilation=1, ceil_mode=False)
    )
    (9): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (10): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (11): ResidualBlock(
      (bn1): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
  )
  (abpFc): Linear(in_features=2814, out_features=32, bias=True)
  (ecgResiduals): Sequential(
    (0): ResidualBlock(
      (bn1): BatchNorm1d(1, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (1): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (2): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (3): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (4): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (5): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (6): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (7): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (8): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=1, dilation=1, ceil_mode=False)
    )
    (9): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (10): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (11): ResidualBlock(
      (bn1): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
  )
  (ecgFc): Linear(in_features=2814, out_features=32, bias=True)
  (eegResiduals): Sequential(
    (0): ResidualBlock(
      (bn1): BatchNorm1d(1, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(1, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(1, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (1): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (2): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (3): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (4): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (5): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(2, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (6): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (7): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
    )
    (8): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (9): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
    )
    (10): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(4, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (11): ResidualBlock(
      (bn1): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(6, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(6, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
    )
  )
  (eegFc): Linear(in_features=720, out_features=32, bias=True)
  (fullLinear1): Linear(in_features=96, out_features=16, bias=True)
  (fullLinear2): Linear(in_features=16, out_features=1, bias=True)
  (sigmoid): Sigmoid()
)

Training Loop
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:58<00:00,  1.59it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.20it/s]
[2024-05-04 21:02:39.612005] Completed epoch 0 with training loss 0.52795690, validation loss 0.55884832
Validation loss improved to 0.55884832. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:58<00:00,  1.57it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.43it/s]
[2024-05-04 21:03:45.315152] Completed epoch 1 with training loss 0.44101697, validation loss 0.58664620
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:56<00:00,  1.63it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
[2024-05-04 21:04:48.448217] Completed epoch 2 with training loss 0.43648484, validation loss 0.61629283
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.59it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.43it/s]
[2024-05-04 21:05:52.978246] Completed epoch 3 with training loss 0.43333396, validation loss 0.61618388
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.61it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
[2024-05-04 21:06:56.680343] Completed epoch 4 with training loss 0.43108836, validation loss 0.59267592
No improvement in validation loss. 4 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:56<00:00,  1.62it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.45it/s]
[2024-05-04 21:08:00.111623] Completed epoch 5 with training loss 0.43332443, validation loss 0.57569194
No improvement in validation loss. 5 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.61it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
[2024-05-04 21:09:03.730570] Completed epoch 6 with training loss 0.43011102, validation loss 0.65964460
No improvement in validation loss. 6 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.61it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.51it/s]
[2024-05-04 21:10:07.408128] Completed epoch 7 with training loss 0.43400416, validation loss 0.56844622
No improvement in validation loss. 7 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:56<00:00,  1.63it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.51it/s]
[2024-05-04 21:11:10.480482] Completed epoch 8 with training loss 0.43240038, validation loss 0.62534142
No improvement in validation loss. 8 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.61it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
[2024-05-04 21:12:14.052078] Completed epoch 9 with training loss 0.43124345, validation loss 0.59480184
No improvement in validation loss. 9 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:56<00:00,  1.62it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
[2024-05-04 21:13:17.436249] Completed epoch 10 with training loss 0.43058753, validation loss 0.61889875
No improvement in validation loss. 10 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:56<00:00,  1.61it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.44it/s]
[2024-05-04 21:14:21.083020] Completed epoch 11 with training loss 0.43051955, validation loss 0.55343801
Validation loss improved to 0.55343801. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:56<00:00,  1.62it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.42it/s]
[2024-05-04 21:15:24.766369] Completed epoch 12 with training loss 0.43200666, validation loss 0.53480911
Validation loss improved to 0.53480911. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.61it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.43it/s]
[2024-05-04 21:16:28.751128] Completed epoch 13 with training loss 0.43015790, validation loss 0.54620838
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:56<00:00,  1.62it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
[2024-05-04 21:17:31.996377] Completed epoch 14 with training loss 0.42899013, validation loss 0.58600122
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:56<00:00,  1.63it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.43it/s]
[2024-05-04 21:18:35.160919] Completed epoch 15 with training loss 0.42603853, validation loss 0.56518185
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.61it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.44it/s]
[2024-05-04 21:19:38.823777] Completed epoch 16 with training loss 0.42759544, validation loss 0.51882446
Validation loss improved to 0.51882446. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:56<00:00,  1.62it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
[2024-05-04 21:20:42.124074] Completed epoch 17 with training loss 0.42720696, validation loss 0.55073214
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:56<00:00,  1.62it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.44it/s]
[2024-05-04 21:21:45.468211] Completed epoch 18 with training loss 0.42678687, validation loss 0.56001234
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:56<00:00,  1.62it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
[2024-05-04 21:22:48.852043] Completed epoch 19 with training loss 0.42527348, validation loss 0.52022231
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:56<00:00,  1.62it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.40it/s]
[2024-05-04 21:23:52.553579] Completed epoch 20 with training loss 0.42658973, validation loss 0.51357764
Validation loss improved to 0.51357764. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:56<00:00,  1.62it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
[2024-05-04 21:24:55.994067] Completed epoch 21 with training loss 0.42401853, validation loss 0.51688814
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:56<00:00,  1.62it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
[2024-05-04 21:25:59.353287] Completed epoch 22 with training loss 0.42522666, validation loss 0.50874788
Validation loss improved to 0.50874788. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.61it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
[2024-05-04 21:27:03.189579] Completed epoch 23 with training loss 0.42480636, validation loss 0.49734712
Validation loss improved to 0.49734712. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.60it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
[2024-05-04 21:28:07.247567] Completed epoch 24 with training loss 0.42440724, validation loss 0.52403837
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.60it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.39it/s]
[2024-05-04 21:29:11.530356] Completed epoch 25 with training loss 0.42503101, validation loss 0.50900829
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.61it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
[2024-05-04 21:30:15.224485] Completed epoch 26 with training loss 0.42393029, validation loss 0.50433689
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.61it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.35it/s]
[2024-05-04 21:31:19.384259] Completed epoch 27 with training loss 0.42464852, validation loss 0.52163613
No improvement in validation loss. 4 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:58<00:00,  1.58it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.31it/s]
[2024-05-04 21:32:24.816109] Completed epoch 28 with training loss 0.42486012, validation loss 0.51351440
No improvement in validation loss. 5 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.61it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.43it/s]
[2024-05-04 21:33:28.827642] Completed epoch 29 with training loss 0.42412037, validation loss 0.51004845
No improvement in validation loss. 6 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.60it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
[2024-05-04 21:34:32.943392] Completed epoch 30 with training loss 0.42310923, validation loss 0.53534794
No improvement in validation loss. 7 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.61it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.45it/s]
[2024-05-04 21:35:36.798411] Completed epoch 31 with training loss 0.42330223, validation loss 0.48164728
Validation loss improved to 0.48164728. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:56<00:00,  1.62it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.51it/s]
[2024-05-04 21:36:40.282423] Completed epoch 32 with training loss 0.42419156, validation loss 0.50445771
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:58<00:00,  1.57it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.34it/s]
[2024-05-04 21:37:45.944956] Completed epoch 33 with training loss 0.42184159, validation loss 0.53948569
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.60it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.31it/s]
[2024-05-04 21:38:50.333172] Completed epoch 34 with training loss 0.42258069, validation loss 0.49764681
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.59it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.46it/s]
[2024-05-04 21:39:54.716833] Completed epoch 35 with training loss 0.42323136, validation loss 0.53945267
No improvement in validation loss. 4 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.60it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
[2024-05-04 21:40:58.822551] Completed epoch 36 with training loss 0.42164478, validation loss 0.49734002
No improvement in validation loss. 5 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.60it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.44it/s]
[2024-05-04 21:42:03.093703] Completed epoch 37 with training loss 0.42172909, validation loss 0.50379300
No improvement in validation loss. 6 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.61it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
[2024-05-04 21:43:06.694350] Completed epoch 38 with training loss 0.42231578, validation loss 0.57624006
No improvement in validation loss. 7 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:56<00:00,  1.62it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.51it/s]
[2024-05-04 21:44:09.995874] Completed epoch 39 with training loss 0.42194384, validation loss 0.48131347
Validation loss improved to 0.48131347. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:56<00:00,  1.61it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
[2024-05-04 21:45:13.661451] Completed epoch 40 with training loss 0.42345038, validation loss 0.49494702
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:58<00:00,  1.58it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.34it/s]
[2024-05-04 21:46:18.933307] Completed epoch 41 with training loss 0.42207962, validation loss 0.53192627
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.59it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.40it/s]
[2024-05-04 21:47:23.688970] Completed epoch 42 with training loss 0.42135268, validation loss 0.55383211
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.60it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
[2024-05-04 21:48:27.811675] Completed epoch 43 with training loss 0.42172000, validation loss 0.56082398
No improvement in validation loss. 4 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:56<00:00,  1.63it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
[2024-05-04 21:49:30.715826] Completed epoch 44 with training loss 0.42295924, validation loss 0.48518950
No improvement in validation loss. 5 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.60it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
[2024-05-04 21:50:34.753578] Completed epoch 45 with training loss 0.42159325, validation loss 0.48260415
No improvement in validation loss. 6 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:56<00:00,  1.63it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.52it/s]
[2024-05-04 21:51:37.552147] Completed epoch 46 with training loss 0.42056230, validation loss 0.51446193
No improvement in validation loss. 7 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:56<00:00,  1.63it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.51it/s]
[2024-05-04 21:52:40.355651] Completed epoch 47 with training loss 0.42210603, validation loss 0.47173464
Validation loss improved to 0.47173464. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.61it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.46it/s]
[2024-05-04 21:53:44.081425] Completed epoch 48 with training loss 0.42256504, validation loss 0.52194279
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.61it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.41it/s]
[2024-05-04 21:54:47.888802] Completed epoch 49 with training loss 0.42145446, validation loss 0.50729930
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.60it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.51it/s]
[2024-05-04 21:55:51.903358] Completed epoch 50 with training loss 0.42049947, validation loss 0.58242905
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.60it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.44it/s]
[2024-05-04 21:56:56.047989] Completed epoch 51 with training loss 0.42059192, validation loss 0.45511776
Validation loss improved to 0.45511776. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.60it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.46it/s]
[2024-05-04 21:58:00.181532] Completed epoch 52 with training loss 0.42130595, validation loss 0.48317254
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [01:01<00:00,  1.50it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.28it/s]
[2024-05-04 21:59:08.796383] Completed epoch 53 with training loss 0.42017078, validation loss 0.50315672
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [01:04<00:00,  1.44it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.21it/s]
[2024-05-04 22:00:20.201319] Completed epoch 54 with training loss 0.42051134, validation loss 0.47654635
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [01:02<00:00,  1.46it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.25it/s]
[2024-05-04 22:01:30.296220] Completed epoch 55 with training loss 0.42010877, validation loss 0.46944094
No improvement in validation loss. 4 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [01:04<00:00,  1.42it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.15it/s]
[2024-05-04 22:02:42.445060] Completed epoch 56 with training loss 0.41946509, validation loss 0.46077815
No improvement in validation loss. 5 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [01:03<00:00,  1.46it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.32it/s]
[2024-05-04 22:03:52.641142] Completed epoch 57 with training loss 0.42153412, validation loss 0.54853153
No improvement in validation loss. 6 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:59<00:00,  1.54it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.35it/s]
[2024-05-04 22:04:59.195851] Completed epoch 58 with training loss 0.42053232, validation loss 0.48665842
No improvement in validation loss. 7 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [01:00<00:00,  1.51it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.39it/s]
[2024-05-04 22:06:06.750809] Completed epoch 59 with training loss 0.42060548, validation loss 0.48146665
No improvement in validation loss. 8 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.61it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
[2024-05-04 22:07:10.281386] Completed epoch 60 with training loss 0.41961312, validation loss 0.47547704
No improvement in validation loss. 9 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.61it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.46it/s]
[2024-05-04 22:08:14.023091] Completed epoch 61 with training loss 0.42002276, validation loss 0.58296353
No improvement in validation loss. 10 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:56<00:00,  1.63it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
[2024-05-04 22:09:17.049650] Completed epoch 62 with training loss 0.42018995, validation loss 0.47233969
No improvement in validation loss. 11 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.61it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
[2024-05-04 22:10:20.620052] Completed epoch 63 with training loss 0.41993594, validation loss 0.48187846
No improvement in validation loss. 12 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.60it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.43it/s]
[2024-05-04 22:11:24.642309] Completed epoch 64 with training loss 0.42012361, validation loss 0.49956399
No improvement in validation loss. 13 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.61it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
[2024-05-04 22:12:28.308237] Completed epoch 65 with training loss 0.42099616, validation loss 0.52838659
No improvement in validation loss. 14 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:56<00:00,  1.62it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.43it/s]
[2024-05-04 22:13:31.934814] Completed epoch 66 with training loss 0.41827053, validation loss 0.45854393
No improvement in validation loss. 15 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.60it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.38it/s]
[2024-05-04 22:14:36.414323] Completed epoch 67 with training loss 0.41981021, validation loss 0.49306121
No improvement in validation loss. 16 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.60it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.46it/s]
[2024-05-04 22:15:40.673619] Completed epoch 68 with training loss 0.41798472, validation loss 0.45857534
No improvement in validation loss. 17 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.60it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
[2024-05-04 22:16:44.623273] Completed epoch 69 with training loss 0.41835454, validation loss 0.44187436
Validation loss improved to 0.44187436. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.60it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.38it/s]
[2024-05-04 22:17:48.894457] Completed epoch 70 with training loss 0.41862646, validation loss 0.44327894
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.59it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
[2024-05-04 22:18:53.138371] Completed epoch 71 with training loss 0.41965160, validation loss 0.44723830
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.61it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
[2024-05-04 22:19:56.738697] Completed epoch 72 with training loss 0.41967475, validation loss 0.43776292
Validation loss improved to 0.43776292. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.61it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.43it/s]
[2024-05-04 22:21:00.532774] Completed epoch 73 with training loss 0.41796124, validation loss 0.44661245
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.60it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.43it/s]
[2024-05-04 22:22:04.693417] Completed epoch 74 with training loss 0.41820431, validation loss 0.53975320
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.59it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
[2024-05-04 22:23:08.944141] Completed epoch 75 with training loss 0.41879687, validation loss 0.50948507
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.61it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
[2024-05-04 22:24:12.654478] Completed epoch 76 with training loss 0.42063028, validation loss 0.47572303
No improvement in validation loss. 4 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.60it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.31it/s]
[2024-05-04 22:25:17.292139] Completed epoch 77 with training loss 0.41715124, validation loss 0.45507920
No improvement in validation loss. 5 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.59it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.46it/s]
[2024-05-04 22:26:21.704999] Completed epoch 78 with training loss 0.42023182, validation loss 0.50152123
No improvement in validation loss. 6 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.61it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.39it/s]
[2024-05-04 22:27:25.627612] Completed epoch 79 with training loss 0.41860920, validation loss 0.49956742
No improvement in validation loss. 7 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.60it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
[2024-05-04 22:28:29.852514] Completed epoch 80 with training loss 0.41969788, validation loss 0.51965421
No improvement in validation loss. 8 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.61it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.42it/s]
[2024-05-04 22:29:33.659874] Completed epoch 81 with training loss 0.41912237, validation loss 0.44872421
No improvement in validation loss. 9 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.60it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
[2024-05-04 22:30:37.712814] Completed epoch 82 with training loss 0.41966280, validation loss 0.44332010
No improvement in validation loss. 10 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:56<00:00,  1.62it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
[2024-05-04 22:31:41.151016] Completed epoch 83 with training loss 0.41879550, validation loss 0.48266476
No improvement in validation loss. 11 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.60it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.41it/s]
[2024-05-04 22:32:45.245045] Completed epoch 84 with training loss 0.41915393, validation loss 0.45460686
No improvement in validation loss. 12 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.59it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.46it/s]
[2024-05-04 22:33:49.545214] Completed epoch 85 with training loss 0.41887620, validation loss 0.51367474
No improvement in validation loss. 13 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.61it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.44it/s]
[2024-05-04 22:34:53.307160] Completed epoch 86 with training loss 0.41899914, validation loss 0.53647679
No improvement in validation loss. 14 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.61it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
[2024-05-04 22:35:56.973797] Completed epoch 87 with training loss 0.41952533, validation loss 0.45345378
No improvement in validation loss. 15 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:56<00:00,  1.63it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.46it/s]
[2024-05-04 22:37:00.081589] Completed epoch 88 with training loss 0.42114723, validation loss 0.44266310
No improvement in validation loss. 16 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.59it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.44it/s]
[2024-05-04 22:38:04.478464] Completed epoch 89 with training loss 0.41847649, validation loss 0.54987025
No improvement in validation loss. 17 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:57<00:00,  1.59it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.40it/s]
[2024-05-04 22:39:09.045696] Completed epoch 90 with training loss 0.41716599, validation loss 0.49457276
No improvement in validation loss. 18 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:58<00:00,  1.57it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.43it/s]
[2024-05-04 22:40:14.324661] Completed epoch 91 with training loss 0.41867206, validation loss 0.48928851
No improvement in validation loss. 19 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:58<00:00,  1.58it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.39it/s]
[2024-05-04 22:41:19.212574] Completed epoch 92 with training loss 0.41937476, validation loss 0.54977024
No improvement in validation loss. 20 epochs without improvement.
Early stopping due to no improvement in validation loss.

Plot Validation and Loss Values from Training
  Epoch with best Validation Loss:   72, 0.4378
Generate AUROC/AUPRC for Each Intermediate Model

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0000.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.60it/s]
Loss: 0.5592737980186939
AUROC: 0.8375634517766497
AUPRC: 0.6911679491817558
Sensitivity: 0.7563451776649747
Specificity: 0.7749648382559775
Threshold: 0.19
Accuracy:  0.76949826130154

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.37it/s]
Loss: 0.5227859023403614
AUROC: 0.8262161742144075
AUPRC: 0.6702689121670109
Sensitivity: 0.7681992337164751
Specificity: 0.7355901189387009
Threshold: 0.18
Accuracy:  0.7441899629504883

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0001.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.36it/s]
Loss: 0.5873788055032492
AUROC: 0.8402258680964587
AUPRC: 0.702043787291098
Sensitivity: 0.7918781725888325
Specificity: 0.7433192686357243
Threshold: 0.14
Accuracy:  0.7575757575757576

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.38it/s]
Loss: 0.5461143867132512
AUROC: 0.8301689668025598
AUPRC: 0.6799953088490501
Sensitivity: 0.7567049808429118
Specificity: 0.7541171088746569
Threshold: 0.14
Accuracy:  0.7547995958235096

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0002.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.32it/s]
Loss: 0.6108291763812304
AUROC: 0.840559636935657
AUPRC: 0.7057330188187257
Sensitivity: 0.7749576988155669
Specificity: 0.7552742616033755
Threshold: 0.12
Accuracy:  0.7610531544957775

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.43it/s]
Loss: 0.5688762908920328
AUROC: 0.8311769924481697
AUPRC: 0.6825529045842763
Sensitivity: 0.7464878671775224
Specificity: 0.7657822506861848
Threshold: 0.12
Accuracy:  0.7606938363085214

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0003.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.37it/s]
Loss: 0.616205058991909
AUROC: 0.84037639129845
AUPRC: 0.7065911898239261
Sensitivity: 0.751269035532995
Specificity: 0.7883263009845288
Threshold: 0.12
Accuracy:  0.7774465971187282

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.44it/s]
Loss: 0.5712820516621813
AUROC: 0.8312179619756047
AUPRC: 0.6831168762288391
Sensitivity: 0.7726692209450831
Specificity: 0.7367337602927722
Threshold: 0.11
Accuracy:  0.7462108454024924

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0004.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.34it/s]
Loss: 0.5941334646195173
AUROC: 0.8407571614536853
AUPRC: 0.7064293022232114
Sensitivity: 0.7580372250423012
Specificity: 0.770042194092827
Threshold: 0.13
Accuracy:  0.7665176353700944

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.40it/s]
Loss: 0.5518242301459008
AUROC: 0.8317719634642371
AUPRC: 0.6834389080688337
Sensitivity: 0.7420178799489144
Specificity: 0.7742451967063129
Threshold: 0.13
Accuracy:  0.7657460424385315

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0005.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.37it/s]
Loss: 0.5743269193917513
AUROC: 0.8404918122517557
AUPRC: 0.7045782059517559
Sensitivity: 0.7783417935702199
Specificity: 0.750351617440225
Threshold: 0.14
Accuracy:  0.7585692995529061

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.40it/s]
Loss: 0.5347047178669179
AUROC: 0.8317202586060838
AUPRC: 0.6834308636588681
Sensitivity: 0.7547892720306514
Specificity: 0.7605215004574566
Threshold: 0.14
Accuracy:  0.759009767598518

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0006.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.38it/s]
Loss: 0.6564639024436474
AUROC: 0.8394101870295406
AUPRC: 0.705655669051437
Sensitivity: 0.7631133671742809
Specificity: 0.7651195499296765
Threshold: 0.09
Accuracy:  0.7645305514157973

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.34it/s]
Loss: 0.6070872316969201
AUROC: 0.8308212659452524
AUPRC: 0.6829938047938721
Sensitivity: 0.7452107279693486
Specificity: 0.770128087831656
Threshold: 0.09
Accuracy:  0.7635567531155271

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0007.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.45it/s]
Loss: 0.5692490953952074
AUROC: 0.8402407419306475
AUPRC: 0.7038383773413479
Sensitivity: 0.7478849407783418
Specificity: 0.7834036568213784
Threshold: 0.15
Accuracy:  0.7729756582215599

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.48it/s]
Loss: 0.529189611686037
AUROC: 0.831497810868887
AUPRC: 0.6833779046228804
Sensitivity: 0.7630906768837803
Specificity: 0.7477127172918573
Threshold: 0.14
Accuracy:  0.7517682721455036

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0008.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.44it/s]
Loss: 0.6236602291464806
AUROC: 0.8391710157757835
AUPRC: 0.7044610057503544
Sensitivity: 0.7766497461928934
Specificity: 0.749648382559775
Threshold: 0.1
Accuracy:  0.7575757575757576

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.41it/s]
Loss: 0.5792310415430272
AUROC: 0.8306476018877824
AUPRC: 0.6829078516784848
Sensitivity: 0.7586206896551724
Specificity: 0.7566331198536139
Threshold: 0.1
Accuracy:  0.7571572920175144

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0009.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.35it/s]
Loss: 0.5968568008393049
AUROC: 0.839393528335249
AUPRC: 0.7041088122710966
Sensitivity: 0.7698815566835872
Specificity: 0.760196905766526
Threshold: 0.12
Accuracy:  0.7630402384500745

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.41it/s]
Loss: 0.5532622816080742
AUROC: 0.8308542752614746
AUPRC: 0.6832730606167221
Sensitivity: 0.7515964240102171
Specificity: 0.7614364135407137
Threshold: 0.12
Accuracy:  0.7588413607275177

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0010.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.38it/s]
Loss: 0.6161442548036575
AUROC: 0.8387926254340183
AUPRC: 0.7040773933725216
Sensitivity: 0.7563451776649747
Specificity: 0.7721518987341772
Threshold: 0.11
Accuracy:  0.767511177347243

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.38it/s]
Loss: 0.5726346690604027
AUROC: 0.8303503719828609
AUPRC: 0.6827834929090523
Sensitivity: 0.7388250319284803
Specificity: 0.7747026532479414
Threshold: 0.11
Accuracy:  0.7652408218255304

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0011.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.36it/s]
Loss: 0.5514503475278616
AUROC: 0.8394958603144684
AUPRC: 0.703379754388072
Sensitivity: 0.7715736040609137
Specificity: 0.7616033755274262
Threshold: 0.15
Accuracy:  0.7645305514157973

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.42it/s]
Loss: 0.5161240915668771
AUROC: 0.831081469913615
AUPRC: 0.6839252117938869
Sensitivity: 0.7515964240102171
Specificity: 0.7641811527904849
Threshold: 0.15
Accuracy:  0.7608622431795218

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0012.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.32it/s]
Loss: 0.535099633038044
AUROC: 0.8394066173093353
AUPRC: 0.7035467462488718
Sensitivity: 0.7715736040609137
Specificity: 0.7623066104078763
Threshold: 0.16
Accuracy:  0.7650273224043715

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.43it/s]
Loss: 0.5017281193682488
AUROC: 0.831208176027875
AUPRC: 0.6842570903369029
Sensitivity: 0.7541507024265645
Specificity: 0.7632662397072278
Threshold: 0.16
Accuracy:  0.7608622431795218

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0013.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.33it/s]
Loss: 0.5440864060074091
AUROC: 0.8389960994857223
AUPRC: 0.7029801145863347
Sensitivity: 0.7461928934010152
Specificity: 0.7819971870604782
Threshold: 0.17
Accuracy:  0.771485345255837

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.44it/s]
Loss: 0.5102373275985109
AUROC: 0.8304514447564263
AUPRC: 0.6830490123957447
Sensitivity: 0.7611749680715197
Specificity: 0.7527447392497713
Threshold: 0.16
Accuracy:  0.7549680026945099

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0014.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.35it/s]
Loss: 0.5873485878109932
AUROC: 0.8389139959209997
AUPRC: 0.7042304176644142
Sensitivity: 0.766497461928934
Specificity: 0.7665260196905767
Threshold: 0.12
Accuracy:  0.7665176353700944

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.42it/s]
Loss: 0.5447812140622037
AUROC: 0.8302046051793661
AUPRC: 0.6823238605605693
Sensitivity: 0.743933588761175
Specificity: 0.7689844464775847
Threshold: 0.12
Accuracy:  0.7623779050185248

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0015.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.38it/s]
Loss: 0.568129563704133
AUROC: 0.8377050506781278
AUPRC: 0.7044008993354967
Sensitivity: 0.7614213197969543
Specificity: 0.7609001406469761
Threshold: 0.13
Accuracy:  0.7610531544957775

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.45it/s]
Loss: 0.5289568251117747
AUROC: 0.829031605982106
AUPRC: 0.6803852198420037
Sensitivity: 0.7452107279693486
Specificity: 0.7660109789569991
Threshold: 0.13
Accuracy:  0.7605254294375211

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0016.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.40it/s]
Loss: 0.5189963988959789
AUROC: 0.8370244240256449
AUPRC: 0.7053987228697728
Sensitivity: 0.7597292724196277
Specificity: 0.7616033755274262
Threshold: 0.19
Accuracy:  0.7610531544957775

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.42it/s]
Loss: 0.4879674299600277
AUROC: 0.8291874508511728
AUPRC: 0.6816154111659348
Sensitivity: 0.7637292464878672
Specificity: 0.7447392497712717
Threshold: 0.18
Accuracy:  0.7497473896934995

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0017.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.37it/s]
Loss: 0.5531755704432726
AUROC: 0.8369101929790743
AUPRC: 0.704500919941804
Sensitivity: 0.7631133671742809
Specificity: 0.7538677918424754
Threshold: 0.15
Accuracy:  0.756582215598609

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.41it/s]
Loss: 0.5171411776162208
AUROC: 0.8281977556001912
AUPRC: 0.6785548559644101
Sensitivity: 0.7420178799489144
Specificity: 0.7648673376029277
Threshold: 0.15
Accuracy:  0.7588413607275177

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0018.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.38it/s]
Loss: 0.5614336188882589
AUROC: 0.8370732102017843
AUPRC: 0.704789268609138
Sensitivity: 0.7563451776649747
Specificity: 0.7693389592123769
Threshold: 0.14
Accuracy:  0.7655240933929458

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.41it/s]
Loss: 0.5258153493100024
AUROC: 0.8285859802131058
AUPRC: 0.6801561108564069
Sensitivity: 0.7598978288633461
Specificity: 0.7506861848124429
Threshold: 0.13
Accuracy:  0.7531155271135063

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0019.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.40it/s]
Loss: 0.5189556945115328
AUROC: 0.8351110539955878
AUPRC: 0.7026173878972375
Sensitivity: 0.751269035532995
Specificity: 0.7679324894514767
Threshold: 0.18
Accuracy:  0.7630402384500745

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.40it/s]
Loss: 0.4919349009052236
AUROC: 0.8274173627834858
AUPRC: 0.6789381115614309
Sensitivity: 0.7528735632183908
Specificity: 0.752516010978957
Threshold: 0.17
Accuracy:  0.7526103065005052

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0020.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.34it/s]
Loss: 0.5142543297261
AUROC: 0.8375789205642062
AUPRC: 0.7048664560780917
Sensitivity: 0.7580372250423012
Specificity: 0.7644163150492265
Threshold: 0.19
Accuracy:  0.7625434674615003

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.39it/s]
Loss: 0.4840589336892392
AUROC: 0.8293523513733628
AUPRC: 0.6808396415564542
Sensitivity: 0.7592592592592593
Specificity: 0.7513723696248856
Threshold: 0.18
Accuracy:  0.7534523408555069

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0021.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.35it/s]
Loss: 0.5162742082029581
AUROC: 0.8369530296215384
AUPRC: 0.7040956522211339
Sensitivity: 0.7614213197969543
Specificity: 0.7630098452883263
Threshold: 0.19
Accuracy:  0.7625434674615003

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.42it/s]
Loss: 0.48895188912432247
AUROC: 0.8286548469945163
AUPRC: 0.6798760177453606
Sensitivity: 0.7567049808429118
Specificity: 0.7504574565416285
Threshold: 0.18
Accuracy:  0.7521050858875042

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0022.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.36it/s]
Loss: 0.5080701373517513
AUROC: 0.8388580703044496
AUPRC: 0.7060936955369529
Sensitivity: 0.7648054145516074
Specificity: 0.760196905766526
Threshold: 0.19
Accuracy:  0.7615499254843517

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.38it/s]
Loss: 0.4817027963222341
AUROC: 0.83065607330522
AUPRC: 0.6811678603510017
Sensitivity: 0.7630906768837803
Specificity: 0.7479414455626715
Threshold: 0.18
Accuracy:  0.7519366790165039

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0023.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.38it/s]
Loss: 0.4946855679154396
AUROC: 0.8388449813303633
AUPRC: 0.7056905386782901
Sensitivity: 0.7648054145516074
Specificity: 0.7517580872011251
Threshold: 0.2
Accuracy:  0.7555886736214605

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.42it/s]
Loss: 0.4710847193256338
AUROC: 0.8306469446226363
AUPRC: 0.6819932395487112
Sensitivity: 0.7477650063856961
Specificity: 0.7618938700823422
Threshold: 0.2
Accuracy:  0.7581677332435164

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0024.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.38it/s]
Loss: 0.5233343839645386
AUROC: 0.836410432150328
AUPRC: 0.7045451138552684
Sensitivity: 0.754653130287648
Specificity: 0.7651195499296765
Threshold: 0.17
Accuracy:  0.762046696472926

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.40it/s]
Loss: 0.4935508062864872
AUROC: 0.828555307839625
AUPRC: 0.6789035100851875
Sensitivity: 0.7573435504469987
Specificity: 0.7504574565416285
Threshold: 0.16
Accuracy:  0.7522734927585045

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0025.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.38it/s]
Loss: 0.5095745008438826
AUROC: 0.8389556426567286
AUPRC: 0.7056831627300277
Sensitivity: 0.766497461928934
Specificity: 0.7566807313642757
Threshold: 0.18
Accuracy:  0.7595628415300546

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.44it/s]
Loss: 0.48281057432610935
AUROC: 0.8306791506147913
AUPRC: 0.6815424901075364
Sensitivity: 0.7618135376756067
Specificity: 0.7454254345837146
Threshold: 0.17
Accuracy:  0.7497473896934995

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0026.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.34it/s]
Loss: 0.5032927189022303
AUROC: 0.839004428832868
AUPRC: 0.7068910510318209
Sensitivity: 0.7529610829103215
Specificity: 0.7770745428973277
Threshold: 0.19
Accuracy:  0.7699950322901142

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.40it/s]
Loss: 0.47673791678662
AUROC: 0.8308959020540557
AUPRC: 0.6823736831582082
Sensitivity: 0.7503192848020435
Specificity: 0.7584629460201281
Threshold: 0.18
Accuracy:  0.7563152576625126

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0027.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.37it/s]
Loss: 0.524112431332469
AUROC: 0.8413961413704393
AUPRC: 0.708766693409139
Sensitivity: 0.7698815566835872
Specificity: 0.7566807313642757
Threshold: 0.17
Accuracy:  0.7605563835072032

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.40it/s]
Loss: 0.4927511640051578
AUROC: 0.8326754839516299
AUPRC: 0.6821066099449345
Sensitivity: 0.7515964240102171
Specificity: 0.7596065873741995
Threshold: 0.17
Accuracy:  0.757494105759515

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0028.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.39it/s]
Loss: 0.5137345902621746
AUROC: 0.8411902875052654
AUPRC: 0.7084543587574499
Sensitivity: 0.7614213197969543
Specificity: 0.7686357243319268
Threshold: 0.18
Accuracy:  0.7665176353700944

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.40it/s]
Loss: 0.48672412272463456
AUROC: 0.8322349702448766
AUPRC: 0.6822023586726401
Sensitivity: 0.764367816091954
Specificity: 0.7483989021043
Threshold: 0.17
Accuracy:  0.7526103065005052

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0029.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.39it/s]
Loss: 0.5058666747063398
AUROC: 0.8394994300346739
AUPRC: 0.7061194437506463
Sensitivity: 0.7631133671742809
Specificity: 0.7686357243319268
Threshold: 0.18
Accuracy:  0.7670144063586687

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.39it/s]
Loss: 0.4813349640115778
AUROC: 0.8314458138928907
AUPRC: 0.682223347712405
Sensitivity: 0.7567049808429118
Specificity: 0.7545745654162854
Threshold: 0.17
Accuracy:  0.7551364095655103

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0030.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.39it/s]
Loss: 0.5339454300701618
AUROC: 0.8419089911732719
AUPRC: 0.7052762502452593
Sensitivity: 0.7580372250423012
Specificity: 0.770745428973277
Threshold: 0.16
Accuracy:  0.7670144063586687

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.39it/s]
Loss: 0.5051367289208352
AUROC: 0.8327646529231064
AUPRC: 0.6812476144095037
Sensitivity: 0.7554278416347382
Specificity: 0.7570905763952425
Threshold: 0.15
Accuracy:  0.7566520714045133

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0031.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.35it/s]
Loss: 0.4811205007135868
AUROC: 0.8446326876899389
AUPRC: 0.705115909972644
Sensitivity: 0.7732656514382402
Specificity: 0.7531645569620253
Threshold: 0.22
Accuracy:  0.7590660705414803

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.43it/s]
Loss: 0.458604762845851
AUROC: 0.8351841919845201
AUPRC: 0.6860172947492365
Sensitivity: 0.7547892720306514
Specificity: 0.7628087831655993
Threshold: 0.22
Accuracy:  0.7606938363085214

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0032.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.41it/s]
Loss: 0.5009691454470158
AUROC: 0.8395232281693761
AUPRC: 0.7076609876691425
Sensitivity: 0.7698815566835872
Specificity: 0.7587904360056259
Threshold: 0.18
Accuracy:  0.762046696472926

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.41it/s]
Loss: 0.47571538800888874
AUROC: 0.831646133703505
AUPRC: 0.6821783586205201
Sensitivity: 0.7650063856960408
Specificity: 0.7467978042086002
Threshold: 0.17
Accuracy:  0.7515998652745032

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0033.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.43it/s]
Loss: 0.5392820909619331
AUROC: 0.8371672128338581
AUPRC: 0.7058110266359393
Sensitivity: 0.7529610829103215
Specificity: 0.7763713080168776
Threshold: 0.15
Accuracy:  0.76949826130154

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.44it/s]
Loss: 0.5079427909977893
AUROC: 0.8286043836371944
AUPRC: 0.6782104463869476
Sensitivity: 0.7496807151979565
Specificity: 0.7589204025617566
Threshold: 0.14
Accuracy:  0.756483664533513

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0034.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.36it/s]
Loss: 0.49896467104554176
AUROC: 0.8397909571847759
AUPRC: 0.7028427955449896
Sensitivity: 0.7698815566835872
Specificity: 0.7580872011251758
Threshold: 0.21
Accuracy:  0.7615499254843517

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.38it/s]
Loss: 0.47283621607942783
AUROC: 0.830779712182132
AUPRC: 0.6817009632945913
Sensitivity: 0.7624521072796935
Specificity: 0.7435956084172004
Threshold: 0.2
Accuracy:  0.7485685415964971

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0035.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.34it/s]
Loss: 0.5416353940963745
AUROC: 0.8429192219913804
AUPRC: 0.7071661193005003
Sensitivity: 0.7698815566835872
Specificity: 0.759493670886076
Threshold: 0.13
Accuracy:  0.7625434674615003

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.40it/s]
Loss: 0.5132813726333861
AUROC: 0.8337847284297264
AUPRC: 0.6821355855198074
Sensitivity: 0.7496807151979565
Specificity: 0.7673833485818847
Threshold: 0.13
Accuracy:  0.7627147187605254

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0036.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.34it/s]
Loss: 0.4975622035562992
AUROC: 0.8416031851423486
AUPRC: 0.7078364737806886
Sensitivity: 0.7681895093062606
Specificity: 0.7573839662447257
Threshold: 0.19
Accuracy:  0.7605563835072032

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.38it/s]
Loss: 0.4711993891508021
AUROC: 0.8334183396255517
AUPRC: 0.685757852038086
Sensitivity: 0.7471264367816092
Specificity: 0.7680695333943275
Threshold: 0.19
Accuracy:  0.762546311889525

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0037.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.42it/s]
Loss: 0.5072362963110209
AUROC: 0.8453073648087464
AUPRC: 0.7062663436883937
Sensitivity: 0.7580372250423012
Specificity: 0.7679324894514767
Threshold: 0.19
Accuracy:  0.7650273224043715

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.40it/s]
Loss: 0.4803386711059733
AUROC: 0.8356289413999922
AUPRC: 0.6854471157362511
Sensitivity: 0.7586206896551724
Specificity: 0.755946935041171
Threshold: 0.18
Accuracy:  0.7566520714045133

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0038.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.35it/s]
Loss: 0.5757032241672277
AUROC: 0.8413342662202136
AUPRC: 0.7072425896232495
Sensitivity: 0.7766497461928934
Specificity: 0.7531645569620253
Threshold: 0.1
Accuracy:  0.7600596125186289

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.40it/s]
Loss: 0.5419621553192747
AUROC: 0.8321669067875334
AUPRC: 0.678826182844932
Sensitivity: 0.7535121328224776
Specificity: 0.7623513266239708
Threshold: 0.1
Accuracy:  0.76002020882452

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0039.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.38it/s]
Loss: 0.478566637262702
AUROC: 0.8417543032977076
AUPRC: 0.70835112461195
Sensitivity: 0.7597292724196277
Specificity: 0.7693389592123769
Threshold: 0.21
Accuracy:  0.7665176353700944

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.38it/s]
Loss: 0.4573407081213403
AUROC: 0.8327103920338295
AUPRC: 0.6832972652645496
Sensitivity: 0.7637292464878672
Specificity: 0.7529734675205856
Threshold: 0.2
Accuracy:  0.7558100370495117

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0040.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.39it/s]
Loss: 0.4943483006209135
AUROC: 0.8419982341784051
AUPRC: 0.7075093585707491
Sensitivity: 0.7749576988155669
Specificity: 0.7545710267229254
Threshold: 0.18
Accuracy:  0.7605563835072032

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.43it/s]
Loss: 0.4711374041247875
AUROC: 0.8328119029841592
AUPRC: 0.6823108154881099
Sensitivity: 0.7509578544061303
Specificity: 0.7637236962488564
Threshold: 0.18
Accuracy:  0.7603570225665207

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0041.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.26it/s]
Loss: 0.5329688377678394
AUROC: 0.8377597863879429
AUPRC: 0.7058327847121745
Sensitivity: 0.766497461928934
Specificity: 0.7454289732770746
Threshold: 0.17
Accuracy:  0.7516145057128664

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.50it/s]
Loss: 0.5026416322018238
AUROC: 0.829397702668438
AUPRC: 0.6785207286906696
Sensitivity: 0.7496807151979565
Specificity: 0.7580054894784996
Threshold: 0.17
Accuracy:  0.7558100370495117

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0042.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
Loss: 0.5534919183701277
AUROC: 0.8454465838967542
AUPRC: 0.70981798723142
Sensitivity: 0.7648054145516074
Specificity: 0.7637130801687764
Threshold: 0.14
Accuracy:  0.764033780427223

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.36it/s]
Loss: 0.5219576764614025
AUROC: 0.8347077477831176
AUPRC: 0.6818482199769003
Sensitivity: 0.7662835249042146
Specificity: 0.7493138151875571
Threshold: 0.13
Accuracy:  0.7537891545975076

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0043.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.30it/s]
Loss: 0.5621622763574123
AUROC: 0.8401990951949188
AUPRC: 0.7095571650859757
Sensitivity: 0.766497461928934
Specificity: 0.7630098452883263
Threshold: 0.12
Accuracy:  0.764033780427223

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.34it/s]
Loss: 0.524293581856058
AUROC: 0.8325772593270306
AUPRC: 0.6805181280612946
Sensitivity: 0.7477650063856961
Specificity: 0.7689844464775847
Threshold: 0.12
Accuracy:  0.7633883462445268

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0044.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.35it/s]
Loss: 0.4861841481178999
AUROC: 0.8380917703670387
AUPRC: 0.704983776947161
Sensitivity: 0.7580372250423012
Specificity: 0.7651195499296765
Threshold: 0.17
Accuracy:  0.7630402384500745

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.38it/s]
Loss: 0.463215504872038
AUROC: 0.829674557353833
AUPRC: 0.6785997639773014
Sensitivity: 0.7567049808429118
Specificity: 0.7522872827081427
Threshold: 0.16
Accuracy:  0.7534523408555069

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0045.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.20it/s]
Loss: 0.48320649564266205
AUROC: 0.841078436272165
AUPRC: 0.7075893664098113
Sensitivity: 0.7529610829103215
Specificity: 0.7749648382559775
Threshold: 0.2
Accuracy:  0.7685047193243915

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:22<00:00,  2.12it/s]
Loss: 0.45803347895754143
AUROC: 0.8324747989937124
AUPRC: 0.6808967837031423
Sensitivity: 0.7541507024265645
Specificity: 0.7607502287282708
Threshold: 0.19
Accuracy:  0.759009767598518

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0046.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.17it/s]
Loss: 0.517790362238884
AUROC: 0.8416698199195147
AUPRC: 0.7105449618297419
Sensitivity: 0.7732656514382402
Specificity: 0.7580872011251758
Threshold: 0.15
Accuracy:  0.7625434674615003

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.20it/s]
Loss: 0.4869303579660172
AUROC: 0.833492099380827
AUPRC: 0.6835693848053981
Sensitivity: 0.7630906768837803
Specificity: 0.7495425434583715
Threshold: 0.14
Accuracy:  0.7531155271135063

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0047.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.37it/s]
Loss: 0.47361529991030693
AUROC: 0.8401526888322494
AUPRC: 0.7086323435578523
Sensitivity: 0.7715736040609137
Specificity: 0.7566807313642757
Threshold: 0.19
Accuracy:  0.7610531544957775

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.39it/s]
Loss: 0.44951002775354587
AUROC: 0.8322749173598623
AUPRC: 0.681499068940665
Sensitivity: 0.7503192848020435
Specificity: 0.7632662397072278
Threshold: 0.19
Accuracy:  0.7598518019535198

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0048.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.33it/s]
Loss: 0.5226488020271063
AUROC: 0.8397397911951661
AUPRC: 0.7074778258043054
Sensitivity: 0.7698815566835872
Specificity: 0.7552742616033755
Threshold: 0.15
Accuracy:  0.7595628415300546

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.35it/s]
Loss: 0.49256749356046636
AUROC: 0.8323287400723751
AUPRC: 0.679686942439268
Sensitivity: 0.7496807151979565
Specificity: 0.7669258920402562
Threshold: 0.15
Accuracy:  0.7623779050185248

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0049.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.26it/s]
Loss: 0.5084954127669334
AUROC: 0.83994326524687
AUPRC: 0.706684383401969
Sensitivity: 0.7715736040609137
Specificity: 0.7524613220815752
Threshold: 0.15
Accuracy:  0.7580725285643318

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:21<00:00,  2.23it/s]
Loss: 0.4802275372946516
AUROC: 0.8309179569511778
AUPRC: 0.6785522209390525
Sensitivity: 0.7490421455938697
Specificity: 0.7614364135407137
Threshold: 0.15
Accuracy:  0.7581677332435164

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0050.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.39it/s]
Loss: 0.5797882452607155
AUROC: 0.8414377881061681
AUPRC: 0.709202259104759
Sensitivity: 0.766497461928934
Specificity: 0.7545710267229254
Threshold: 0.09
Accuracy:  0.7580725285643318

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.42it/s]
Loss: 0.5448507003961726
AUROC: 0.8326074935237475
AUPRC: 0.6790674571652336
Sensitivity: 0.7528735632183908
Specificity: 0.7673833485818847
Threshold: 0.09
Accuracy:  0.7635567531155271

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0051.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.39it/s]
Loss: 0.4544910565018654
AUROC: 0.8400027605836253
AUPRC: 0.7071606164552687
Sensitivity: 0.7563451776649747
Specificity: 0.770745428973277
Threshold: 0.22
Accuracy:  0.7665176353700944

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.42it/s]
Loss: 0.43325021450823925
AUROC: 0.8320494023853174
AUPRC: 0.6807222810891936
Sensitivity: 0.7554278416347382
Specificity: 0.7552607502287283
Threshold: 0.21
Accuracy:  0.7553048164365106

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0052.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.33it/s]
Loss: 0.4841320775449276
AUROC: 0.8448742387571664
AUPRC: 0.7093024228737677
Sensitivity: 0.7732656514382402
Specificity: 0.7552742616033755
Threshold: 0.18
Accuracy:  0.7605563835072032

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.40it/s]
Loss: 0.4600825382673994
AUROC: 0.8354098530179862
AUPRC: 0.6837903991750789
Sensitivity: 0.7637292464878672
Specificity: 0.7486276303751144
Threshold: 0.17
Accuracy:  0.7526103065005052

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0053.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.39it/s]
Loss: 0.5017970763146877
AUROC: 0.8436057981775389
AUPRC: 0.712431700892219
Sensitivity: 0.7715736040609137
Specificity: 0.7566807313642757
Threshold: 0.16
Accuracy:  0.7610531544957775

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.42it/s]
Loss: 0.4750038705607678
AUROC: 0.8355413060471899
AUPRC: 0.6862836131061154
Sensitivity: 0.7522349936143039
Specificity: 0.7641811527904849
Threshold: 0.16
Accuracy:  0.7610306500505221

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0054.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.36it/s]
Loss: 0.47499656677246094
AUROC: 0.8426503030692456
AUPRC: 0.7081676588957148
Sensitivity: 0.7749576988155669
Specificity: 0.7587904360056259
Threshold: 0.17
Accuracy:  0.7635370094386488

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.41it/s]
Loss: 0.45698918814354755
AUROC: 0.8326908201383703
AUPRC: 0.6820985677384399
Sensitivity: 0.7611749680715197
Specificity: 0.7529734675205856
Threshold: 0.16
Accuracy:  0.7551364095655103

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0055.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.38it/s]
Loss: 0.4715925846248865
AUROC: 0.8455512956894439
AUPRC: 0.7114876874570116
Sensitivity: 0.7648054145516074
Specificity: 0.7644163150492265
Threshold: 0.19
Accuracy:  0.7645305514157973

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.42it/s]
Loss: 0.4470455164604999
AUROC: 0.8361928748952758
AUPRC: 0.6833532646018378
Sensitivity: 0.7573435504469987
Specificity: 0.7621225983531564
Threshold: 0.18
Accuracy:  0.7608622431795218

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0056.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.35it/s]
Loss: 0.4592343531548977
AUROC: 0.8406417405003798
AUPRC: 0.707137664976757
Sensitivity: 0.7529610829103215
Specificity: 0.7714486638537271
Threshold: 0.23
Accuracy:  0.7660208643815202

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.39it/s]
Loss: 0.4419932080076096
AUROC: 0.8308376245444422
AUPRC: 0.6796642392895245
Sensitivity: 0.7458492975734355
Specificity: 0.7605215004574566
Threshold: 0.22
Accuracy:  0.7566520714045133

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0057.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.40it/s]
Loss: 0.5449338424950838
AUROC: 0.8439687197317474
AUPRC: 0.7111511693428787
Sensitivity: 0.7597292724196277
Specificity: 0.7728551336146273
Threshold: 0.09
Accuracy:  0.7690014903129657

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.43it/s]
Loss: 0.5180139684296668
AUROC: 0.835048430217137
AUPRC: 0.6826194365624253
Sensitivity: 0.7624521072796935
Specificity: 0.7609789569990851
Threshold: 0.08
Accuracy:  0.7613674637925227

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0058.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.40it/s]
Loss: 0.48345126397907734
AUROC: 0.8457630990882935
AUPRC: 0.7122997454062545
Sensitivity: 0.7580372250423012
Specificity: 0.7665260196905767
Threshold: 0.14
Accuracy:  0.764033780427223

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.43it/s]
Loss: 0.464497946044232
AUROC: 0.8351508905504551
AUPRC: 0.6838918417737004
Sensitivity: 0.7515964240102171
Specificity: 0.7644098810612991
Threshold: 0.13
Accuracy:  0.7610306500505221

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0059.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.39it/s]
Loss: 0.4824417009949684
AUROC: 0.846631731004924
AUPRC: 0.7120635225426
Sensitivity: 0.7597292724196277
Specificity: 0.770042194092827
Threshold: 0.21
Accuracy:  0.7670144063586687

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.44it/s]
Loss: 0.4584696330922715
AUROC: 0.8360472541507025
AUPRC: 0.6843132216150096
Sensitivity: 0.7573435504469987
Specificity: 0.7506861848124429
Threshold: 0.2
Accuracy:  0.7524418996295049

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0060.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.42it/s]
Loss: 0.47592005878686905
AUROC: 0.8409023300753686
AUPRC: 0.7077805636352167
Sensitivity: 0.7631133671742809
Specificity: 0.7552742616033755
Threshold: 0.17
Accuracy:  0.7575757575757576

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.44it/s]
Loss: 0.4500489390276848
AUROC: 0.8332018803041297
AUPRC: 0.681986152648177
Sensitivity: 0.7598978288633461
Specificity: 0.7516010978957
Threshold: 0.16
Accuracy:  0.7537891545975076

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0061.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.39it/s]
Loss: 0.5832449290901423
AUROC: 0.8440603425503509
AUPRC: 0.7119415296540088
Sensitivity: 0.7698815566835872
Specificity: 0.7637130801687764
Threshold: 0.07
Accuracy:  0.7655240933929458

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.42it/s]
Loss: 0.5499764769635302
AUROC: 0.8353460252693619
AUPRC: 0.684282119169669
Sensitivity: 0.7490421455938697
Specificity: 0.7712717291857274
Threshold: 0.07
Accuracy:  0.7654092286965308

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0062.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.41it/s]
Loss: 0.4713859725743532
AUROC: 0.8461855159792576
AUPRC: 0.7121042600390611
Sensitivity: 0.7580372250423012
Specificity: 0.7756680731364276
Threshold: 0.2
Accuracy:  0.7704918032786885

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.45it/s]
Loss: 0.44882504229849957
AUROC: 0.8365606512592032
AUPRC: 0.6846618964722186
Sensitivity: 0.7567049808429118
Specificity: 0.7609789569990851
Threshold: 0.19
Accuracy:  0.7598518019535198

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0063.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
Loss: 0.4853644445538521
AUROC: 0.8415234613910961
AUPRC: 0.7093456302894361
Sensitivity: 0.7580372250423012
Specificity: 0.770745428973277
Threshold: 0.17
Accuracy:  0.7670144063586687

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.52it/s]
Loss: 0.4583832875211188
AUROC: 0.8331339629057077
AUPRC: 0.6818176568701036
Sensitivity: 0.7496807151979565
Specificity: 0.7621225983531564
Threshold: 0.16
Accuracy:  0.7588413607275177

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0064.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.51it/s]
Loss: 0.501485750079155
AUROC: 0.8464758532226245
AUPRC: 0.7142218636221025
Sensitivity: 0.7715736040609137
Specificity: 0.760196905766526
Threshold: 0.15
Accuracy:  0.7635370094386488

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.52it/s]
Loss: 0.47316361171133975
AUROC: 0.8363463828216013
AUPRC: 0.6841519601819231
Sensitivity: 0.7503192848020435
Specificity: 0.7648673376029277
Threshold: 0.15
Accuracy:  0.7610306500505221

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0065.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
Loss: 0.5256675034761429
AUROC: 0.8438735271929386
AUPRC: 0.7099331800976605
Sensitivity: 0.7580372250423012
Specificity: 0.7623066104078763
Threshold: 0.11
Accuracy:  0.7610531544957775

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.51it/s]
Loss: 0.5009635468112662
AUROC: 0.8345989338867215
AUPRC: 0.6816423111910287
Sensitivity: 0.7535121328224776
Specificity: 0.7568618481244281
Threshold: 0.1
Accuracy:  0.7559784439205119

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0066.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.46it/s]
Loss: 0.46093424782156944
AUROC: 0.841521081577626
AUPRC: 0.7070672757060255
Sensitivity: 0.7597292724196277
Specificity: 0.7580872011251758
Threshold: 0.2
Accuracy:  0.7585692995529061

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.49it/s]
Loss: 0.4411065226539652
AUROC: 0.8322709007395256
AUPRC: 0.6812332576476511
Sensitivity: 0.7528735632183908
Specificity: 0.7568618481244281
Threshold: 0.19
Accuracy:  0.7558100370495117

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0067.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
Loss: 0.4921039715409279
AUROC: 0.843899705141111
AUPRC: 0.710089813237265
Sensitivity: 0.754653130287648
Specificity: 0.7714486638537271
Threshold: 0.17
Accuracy:  0.7665176353700944

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.51it/s]
Loss: 0.46786753262611147
AUROC: 0.8349231846920904
AUPRC: 0.6819347840132522
Sensitivity: 0.7586206896551724
Specificity: 0.7518298261665142
Threshold: 0.15
Accuracy:  0.7536207477265072

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0068.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
Loss: 0.45632558688521385
AUROC: 0.8420458304478095
AUPRC: 0.7066367942452736
Sensitivity: 0.7631133671742809
Specificity: 0.7672292545710268
Threshold: 0.2
Accuracy:  0.7660208643815202

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.49it/s]
Loss: 0.43618663289445514
AUROC: 0.8333844539558013
AUPRC: 0.6806279650240437
Sensitivity: 0.7586206896551724
Specificity: 0.7502287282708143
Threshold: 0.19
Accuracy:  0.7524418996295049

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0069.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.46it/s]
Loss: 0.4414151459932327
AUROC: 0.8423635355460839
AUPRC: 0.7075252684373126
Sensitivity: 0.7648054145516074
Specificity: 0.7630098452883263
Threshold: 0.28
Accuracy:  0.7635370094386488

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.51it/s]
Loss: 0.42578866031575713
AUROC: 0.8327067405607962
AUPRC: 0.6789241728047525
Sensitivity: 0.7624521072796935
Specificity: 0.7527447392497713
Threshold: 0.27
Accuracy:  0.7553048164365106

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0070.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.43it/s]
Loss: 0.4406341966241598
AUROC: 0.8460332079171633
AUPRC: 0.7119269844872468
Sensitivity: 0.7614213197969543
Specificity: 0.7763713080168776
Threshold: 0.25
Accuracy:  0.7719821162444114

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.48it/s]
Loss: 0.42614733570433677
AUROC: 0.8352306387215054
AUPRC: 0.6837087071789216
Sensitivity: 0.7598978288633461
Specificity: 0.7548032936870998
Threshold: 0.24
Accuracy:  0.7561468507915123

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0071.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
Loss: 0.44792394153773785
AUROC: 0.8419030416395962
AUPRC: 0.7075781873505079
Sensitivity: 0.7631133671742809
Specificity: 0.770745428973277
Threshold: 0.25
Accuracy:  0.7685047193243915

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.53it/s]
Loss: 0.4296675381508279
AUROC: 0.8327545018280735
AUPRC: 0.679058160946638
Sensitivity: 0.764367816091954
Specificity: 0.7513723696248856
Threshold: 0.24
Accuracy:  0.7547995958235096

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0072.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
Loss: 0.4394940696656704
AUROC: 0.8424266006030446
AUPRC: 0.7076861340115749
Sensitivity: 0.7681895093062606
Specificity: 0.7573839662447257
Threshold: 0.29
Accuracy:  0.7605563835072032

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.51it/s]
Loss: 0.4267581945404093
AUROC: 0.8327256551911094
AUPRC: 0.681267323604146
Sensitivity: 0.7541507024265645
Specificity: 0.7653247941445562
Threshold: 0.29
Accuracy:  0.7623779050185248

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0073.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
Loss: 0.4456650782376528
AUROC: 0.8456857551505114
AUPRC: 0.7111617293544942
Sensitivity: 0.7631133671742809
Specificity: 0.7637130801687764
Threshold: 0.23
Accuracy:  0.7635370094386488

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.53it/s]
Loss: 0.43324663601023083
AUROC: 0.8340718072396149
AUPRC: 0.6833494948338846
Sensitivity: 0.7554278416347382
Specificity: 0.7541171088746569
Threshold: 0.22
Accuracy:  0.754462782081509

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0074.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
Loss: 0.5406687911599874
AUROC: 0.8424135116289585
AUPRC: 0.7099482436096748
Sensitivity: 0.7597292724196277
Specificity: 0.7644163150492265
Threshold: 0.12
Accuracy:  0.7630402384500745

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.48it/s]
Loss: 0.5101129114627838
AUROC: 0.8331561638617511
AUPRC: 0.679808108875408
Sensitivity: 0.7573435504469987
Specificity: 0.755946935041171
Threshold: 0.11
Accuracy:  0.7563152576625126

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0075.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.46it/s]
Loss: 0.5082892123609781
AUROC: 0.838053693351515
AUPRC: 0.7065381917431313
Sensitivity: 0.7597292724196277
Specificity: 0.759493670886076
Threshold: 0.15
Accuracy:  0.7595628415300546

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.50it/s]
Loss: 0.4797522948777422
AUROC: 0.830819148090893
AUPRC: 0.6796903489099728
Sensitivity: 0.7624521072796935
Specificity: 0.7483989021043
Threshold: 0.14
Accuracy:  0.7521050858875042

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0076.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
Loss: 0.4769009705632925
AUROC: 0.8506714643706227
AUPRC: 0.7171524657740636
Sensitivity: 0.7648054145516074
Specificity: 0.7616033755274262
Threshold: 0.16
Accuracy:  0.7625434674615003

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.51it/s]
Loss: 0.45461469318004366
AUROC: 0.838691650921515
AUPRC: 0.6872240787460455
Sensitivity: 0.7618135376756067
Specificity: 0.7541171088746569
Threshold: 0.15
Accuracy:  0.7561468507915123

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0077.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.46it/s]
Loss: 0.4539890978485346
AUROC: 0.8459368254716196
AUPRC: 0.7078200393537352
Sensitivity: 0.7631133671742809
Specificity: 0.7644163150492265
Threshold: 0.23
Accuracy:  0.764033780427223

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.51it/s]
Loss: 0.4349468410649198
AUROC: 0.8362479391086199
AUPRC: 0.683035680432654
Sensitivity: 0.743933588761175
Specificity: 0.7687557182067704
Threshold: 0.23
Accuracy:  0.7622094981475244

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0078.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
Loss: 0.5023023784160614
AUROC: 0.845487040725748
AUPRC: 0.7137085943390904
Sensitivity: 0.7597292724196277
Specificity: 0.7679324894514767
Threshold: 0.15
Accuracy:  0.7655240933929458

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.50it/s]
Loss: 0.47723098574800693
AUROC: 0.8362205530608691
AUPRC: 0.6852227325059775
Sensitivity: 0.7535121328224776
Specificity: 0.7605215004574566
Threshold: 0.14
Accuracy:  0.7586729538565173

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0079.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
Loss: 0.49895674362778664
AUROC: 0.8429894264887519
AUPRC: 0.7102183259280427
Sensitivity: 0.7648054145516074
Specificity: 0.7665260196905767
Threshold: 0.13
Accuracy:  0.7660208643815202

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.50it/s]
Loss: 0.47330586675633773
AUROC: 0.834266649840679
AUPRC: 0.6854006745345459
Sensitivity: 0.7567049808429118
Specificity: 0.7580054894784996
Threshold: 0.12
Accuracy:  0.7576625126305153

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0080.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
Loss: 0.5190341807901859
AUROC: 0.8481738501336263
AUPRC: 0.7161003435326797
Sensitivity: 0.766497461928934
Specificity: 0.7658227848101266
Threshold: 0.11
Accuracy:  0.7660208643815202

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.50it/s]
Loss: 0.49340007311486184
AUROC: 0.8369577854663195
AUPRC: 0.6870143282988098
Sensitivity: 0.7618135376756067
Specificity: 0.755032021957914
Threshold: 0.1
Accuracy:  0.7568204782755137

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0081.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
Loss: 0.44953313283622265
AUROC: 0.8449301643737165
AUPRC: 0.7090270686866289
Sensitivity: 0.7631133671742809
Specificity: 0.7728551336146273
Threshold: 0.24
Accuracy:  0.7699950322901142

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.31it/s]
Loss: 0.4329799492942526
AUROC: 0.8337494552002234
AUPRC: 0.6834726619312456
Sensitivity: 0.7490421455938697
Specificity: 0.7698993595608418
Threshold: 0.24
Accuracy:  0.7643987874705288

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0082.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.35it/s]
Loss: 0.44331591948866844
AUROC: 0.8421065156913001
AUPRC: 0.7104149884355082
Sensitivity: 0.7715736040609137
Specificity: 0.7623066104078763
Threshold: 0.26
Accuracy:  0.7650273224043715

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.44it/s]
Loss: 0.4270937499847818
AUROC: 0.8336324620042322
AUPRC: 0.6838437863364982
Sensitivity: 0.7490421455938697
Specificity: 0.7644098810612991
Threshold: 0.26
Accuracy:  0.7603570225665207

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0083.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.46it/s]
Loss: 0.4843842852860689
AUROC: 0.8427276470070275
AUPRC: 0.7096936198043178
Sensitivity: 0.7580372250423012
Specificity: 0.7573839662447257
Threshold: 0.19
Accuracy:  0.7575757575757576

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.43it/s]
Loss: 0.4591516288036996
AUROC: 0.8339039855389982
AUPRC: 0.6798512433028036
Sensitivity: 0.7547892720306514
Specificity: 0.7552607502287283
Threshold: 0.18
Accuracy:  0.7551364095655103

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0084.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.40it/s]
Loss: 0.45508396439254284
AUROC: 0.850038433987544
AUPRC: 0.7130234660365099
Sensitivity: 0.754653130287648
Specificity: 0.770745428973277
Threshold: 0.19
Accuracy:  0.7660208643815202

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.44it/s]
Loss: 0.43616369683691797
AUROC: 0.8396645493965429
AUPRC: 0.6879273952816662
Sensitivity: 0.756066411238825
Specificity: 0.7596065873741995
Threshold: 0.18
Accuracy:  0.7586729538565173

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0085.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.43it/s]
Loss: 0.5171164739876986
AUROC: 0.8439139840219322
AUPRC: 0.7133201862346893
Sensitivity: 0.7631133671742809
Specificity: 0.7651195499296765
Threshold: 0.14
Accuracy:  0.7645305514157973

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.44it/s]
Loss: 0.48718434255173865
AUROC: 0.835172507270813
AUPRC: 0.6839115839377636
Sensitivity: 0.7541507024265645
Specificity: 0.7614364135407137
Threshold: 0.13
Accuracy:  0.7595149882115191

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0086.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.40it/s]
Loss: 0.537101399153471
AUROC: 0.8468114069219255
AUPRC: 0.7159229975003183
Sensitivity: 0.7766497461928934
Specificity: 0.7609001406469761
Threshold: 0.1
Accuracy:  0.7655240933929458

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.43it/s]
Loss: 0.5039597343891224
AUROC: 0.837675080829007
AUPRC: 0.685637493900789
Sensitivity: 0.7547892720306514
Specificity: 0.7612076852698993
Threshold: 0.1
Accuracy:  0.7595149882115191

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0087.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.45it/s]
Loss: 0.45130082219839096
AUROC: 0.8480929364756391
AUPRC: 0.713981061493715
Sensitivity: 0.7766497461928934
Specificity: 0.7552742616033755
Threshold: 0.23
Accuracy:  0.7615499254843517

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.51it/s]
Loss: 0.43244884432630337
AUROC: 0.8374681153374721
AUPRC: 0.6835996744602627
Sensitivity: 0.7522349936143039
Specificity: 0.7586916742909423
Threshold: 0.23
Accuracy:  0.756988885146514

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0088.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.45it/s]
Loss: 0.44112659618258476
AUROC: 0.8428585367478897
AUPRC: 0.7097452456481147
Sensitivity: 0.7698815566835872
Specificity: 0.7630098452883263
Threshold: 0.28
Accuracy:  0.7650273224043715

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.39it/s]
Loss: 0.42585019164897026
AUROC: 0.8335648367236531
AUPRC: 0.6821471441145921
Sensitivity: 0.7630906768837803
Specificity: 0.7527447392497713
Threshold: 0.27
Accuracy:  0.755473223307511

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0089.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.31it/s]
Loss: 0.549312885850668
AUROC: 0.8440662920840265
AUPRC: 0.7117437353184132
Sensitivity: 0.7749576988155669
Specificity: 0.7545710267229254
Threshold: 0.08
Accuracy:  0.7605563835072032

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:22<00:00,  2.05it/s]
Loss: 0.5176771051706152
AUROC: 0.8345671660713305
AUPRC: 0.6830740601529406
Sensitivity: 0.7605363984674329
Specificity: 0.7605215004574566
Threshold: 0.08
Accuracy:  0.7605254294375211

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0090.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.27it/s]
Loss: 0.4934713374823332
AUROC: 0.84885923641305
AUPRC: 0.7156763722103204
Sensitivity: 0.7749576988155669
Specificity: 0.7573839662447257
Threshold: 0.14
Accuracy:  0.7625434674615003

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.40it/s]
Loss: 0.4682480857727375
AUROC: 0.8376704069435245
AUPRC: 0.6858703476616502
Sensitivity: 0.7586206896551724
Specificity: 0.7580054894784996
Threshold: 0.14
Accuracy:  0.7581677332435164

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0091.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.44it/s]
Loss: 0.4904552213847637
AUROC: 0.8454953700728938
AUPRC: 0.7146633769418488
Sensitivity: 0.7648054145516074
Specificity: 0.7686357243319268
Threshold: 0.14
Accuracy:  0.767511177347243

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.46it/s]
Loss: 0.4621495328685071
AUROC: 0.8376727438862658
AUPRC: 0.6860025017623308
Sensitivity: 0.7573435504469987
Specificity: 0.7545745654162854
Threshold: 0.13
Accuracy:  0.7553048164365106

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0092.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.36it/s]
Loss: 0.5523972939699888
AUROC: 0.8519910709398597
AUPRC: 0.7167738042133736
Sensitivity: 0.7783417935702199
Specificity: 0.7672292545710268
Threshold: 0.09
Accuracy:  0.7704918032786885

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.39it/s]
Loss: 0.5215899906259902
AUROC: 0.8401415778336306
AUPRC: 0.6889128288563813
Sensitivity: 0.7477650063856961
Specificity: 0.7742451967063129
Threshold: 0.09
Accuracy:  0.7672617042775345


Plot AUROC/AUPRC for Each Intermediate Model
  Epoch with best Validation Loss:      72, 0.4378
  Epoch with best model Test AUROC:     92, 0.8401
  Epoch with best model Test Accuracy:  92, 0.7673

AUROC/AUPRC Plots - Best Model Based on Validation Loss
  Epoch with best Validation Loss:   72, 0.4378
  Best Model Based on Validation Loss:
    ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0072.model

Generate Stats Based on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.34it/s]
Loss: 0.4267581945404093
AUROC: 0.8327256551911094
AUPRC: 0.681267323604146
Sensitivity: 0.7541507024265645
Specificity: 0.7653247941445562
Threshold: 0.29
Accuracy:  0.7623779050185248
best_model_val_test_auroc: 0.8327256551911094
best_model_val_test_auprc: 0.681267323604146

AUROC/AUPRC Plots - Best Model Based on Model AUROC
  Epoch with best model Test AUROC:  92, 0.8401
  Best Model Based on Model AUROC:
    ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_1e-01_WEIGHT_DECAY_003_MINS__ALL_MAX_CASES_bea05a31_0092.model

Generate Stats Based on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.37it/s]
Loss: 0.5215899906259902
AUROC: 0.8401415778336306
AUPRC: 0.6889128288563813
Sensitivity: 0.7477650063856961
Specificity: 0.7742451967063129
Threshold: 0.09
Accuracy:  0.7672617042775345
best_model_auroc_test_auroc: 0.8401415778336306
best_model_auroc_test_auprc: 0.6889128288563813

Total Processing Time: 8555.1390 sec

ABP and Batch Size Splits¶

In [107]:
RUN_ME = False

if MULTI_RUN and RUN_ME:
    run_experiment(
        experimentNamePrefix=None, 
        useAbp=True, 
        useEeg=False, 
        useEcg=False,
        nResiduals=12, 
        skip_connection=False,
        batch_size=16,
        learning_rate=1e-4,
        weight_decay=0.0,
        balance_labels=False,
        #pos_weight=2.0,
        pos_weight=None,
        max_epochs=200,
        patience=20,
        device=device
    )
In [108]:
RUN_ME = False

if MULTI_RUN and RUN_ME:
    run_experiment(
        experimentNamePrefix=None, 
        useAbp=True, 
        useEeg=False, 
        useEcg=False,
        nResiduals=12, 
        skip_connection=False,
        batch_size=32,
        learning_rate=1e-4,
        weight_decay=0.0,
        balance_labels=False,
        #pos_weight=2.0,
        pos_weight=None,
        max_epochs=200,
        patience=20,
        device=device
    )
In [109]:
RUN_ME = False

if MULTI_RUN and RUN_ME:
    run_experiment(
        experimentNamePrefix=None, 
        useAbp=True, 
        useEeg=False, 
        useEcg=False,
        nResiduals=12, 
        skip_connection=False,
        batch_size=64,
        learning_rate=1e-4,
        weight_decay=0.0,
        balance_labels=False,
        #pos_weight=2.0,
        pos_weight=None,
        max_epochs=200,
        patience=20,
        device=device
    )
In [110]:
RUN_ME = False

if MULTI_RUN and RUN_ME:
    run_experiment(
        experimentNamePrefix=None, 
        useAbp=True, 
        useEeg=False, 
        useEcg=False,
        nResiduals=12, 
        skip_connection=False,
        batch_size=128,
        learning_rate=1e-4,
        weight_decay=0.0,
        balance_labels=False,
        #pos_weight=2.0,
        pos_weight=None,
        max_epochs=200,
        patience=20,
        device=device
    )

ABP and Learning Rate¶

In [111]:
RUN_ME = False

if MULTI_RUN and RUN_ME:
    run_experiment(
        experimentNamePrefix=None, 
        useAbp=True, 
        useEeg=False, 
        useEcg=False,
        nResiduals=12, 
        skip_connection=False,
        batch_size=128,
        learning_rate=1e-2,
        weight_decay=0.0,
        balance_labels=False,
        #pos_weight=2.0,
        pos_weight=None,
        max_epochs=200,
        patience=20,
        device=device
    )
In [112]:
RUN_ME = False

if MULTI_RUN and RUN_ME:
    run_experiment(
        experimentNamePrefix=None, 
        useAbp=True, 
        useEeg=False, 
        useEcg=False,
        nResiduals=12, 
        skip_connection=False,
        batch_size=128,
        learning_rate=1e-3,
        weight_decay=0.0,
        balance_labels=False,
        #pos_weight=2.0,
        pos_weight=None,
        max_epochs=200,
        patience=20,
        device=device
    )
In [113]:
RUN_ME = False

if MULTI_RUN and RUN_ME:
    run_experiment(
        experimentNamePrefix=None, 
        useAbp=True, 
        useEeg=False, 
        useEcg=False,
        nResiduals=12, 
        skip_connection=False,
        batch_size=128,
        learning_rate=1e-4,
        weight_decay=0.0,
        balance_labels=False,
        #pos_weight=2.0,
        pos_weight=None,
        max_epochs=200,
        patience=20,
        device=device
    )

Balance Labels¶

In [114]:
RUN_ME = False

if MULTI_RUN and RUN_ME:
    run_experiment(
        experimentNamePrefix=None, 
        useAbp=True, 
        useEeg=False, 
        useEcg=False,
        nResiduals=12, 
        skip_connection=False,
        batch_size=64,
        learning_rate=1e-4,
        weight_decay=0.0,
        balance_labels=True,
        #pos_weight=2.0,
        pos_weight=None,
        max_epochs=200,
        patience=20,
        device=device
    )

Results (Planned results for Draft submission)¶

When we complete our experiments, we will build comparison tables that compare a set of measures for each experiment performed. The full set of experiments and measures are listed below.

Results from Final Rubrik¶

  • Table of results (no need to include additional experiments, but main reproducibility result should be included)
  • All claims should be supported by experiment results
  • Discuss with respect to the hypothesis and results from the original paper
  • Experiments beyond the original paper
    • Each experiment should include results and a discussion
  • Ablation Study.

Experiments¶

  • ABP only
  • ECG only
  • EEG only
  • ABP + ECG
  • ABP + EEG
  • ECG + EEG
  • ABP + ECG + EEG

Note: each experiment will be repeated with the following time-to-IOH-event durations:

  • 3 minutes
  • 5 minutes
  • 10 minutes
  • 15 minutes

Note: the above list of experiments will be performed if there is sufficient time and gpu capability to complete that before the submission deadline. Should we experience any constraints on this front, we will reduce our experimental coverage to the following 4 core experiments that are necessary to measure the hypotheses included at the head of this report:

  • ABP only @ 3 minutes
  • ABP + ECG @ 3 minutes
  • ABP + EEG @ 3 minutes
  • ABP + ECG + EEG @ 3 minutes

For additional details please review the "Planned Actions" in the Discussion section of this report.

Measures¶

  • AUROC
  • AUPRC
  • Sensitivity
  • Specificity
  • Threshold
  • Loss Shrinkage

[ TODO for final report - collect data for all measures listed above. ]

[ TODO for final report - generate ROC and PRC plots for each experiment ]

We are collecting a broad set of measures across each experiment in order to perform a comprehensive comparison of all measures listed across all comparable experiments executed in the original paper. However, our key experimental results will be focused on a subset of these results that address the main experiments defined at the beginning of this notebook.

The key experimental result measures will be as follows:

  • For 3 minutes ahead of the predicted IOH event:
    • compare AUROC and AUPRC for ABP only vs ABP+ECG
    • compare AUROC and AUPRC for ABP only vs ABP+EEG
    • compare AUROC and AUPRC for ABP only vs ABP+ECG+EEG

Model comparison¶

The following table is Table 3 from the original paper which presents the measured values for each signal combination across each of the four temporal predictive categories:

Area under the Receiver-operating Characteristic Curve, Area under the Precision-Recall Curve, Sensitivity, and Specificity of the model in predicting intraoperative hypotension

We have not yet completed the execution of the experiments necessary to determine our reproduced model performance in order determine whether our results are accurately representing those of the original paper. These details are expected to be included in the final report.

As of the draft submission, the reported evaluation measures of our model are too good to be true (all measures are 1.0). We suspect that there is data leakage in the dataset splitting process and will address this in time for the final report.

Discussion¶

Discussion (10) FROM FINAL RUBRIK¶

  • Implications of the experimental results, whether the original paper was reproducible, and if it wasn’t, what factors made it irreproducible
  • “What was easy”
  • “What was difficult”
  • Recommendations to the original authors or others who work in this area for improving reproducibility
  • (specific to our group) "I have communicated with Maciej during OH. The draft looks good and I would expect some explanations/analysis on the final report on why you get 1.0 as AUROC."
    • discuss our bug where we were believing we were sampling dozens of different patient samples but were just training the model on the same segments extracted from the same patient sample over and over. so we were massively overfitting our training data for one patient's data, then unwittingly using the same patient data for validation and testing, thus getting perfect classification during inference.

Feasibility of reproduction¶

Our assessment is that this paper will be reproducible. The outstanding risk is that each experiment can take up to 7 hours to run on hardware within the team (i.e., 7h to run ~70 epochs on a desktop with AMD Ryzen 7 3800X 8-core CPU w/ RTX 2070 SUPER GPU and 32GB RAM). There are a total of 28 experiments (7 different combinations of signal inputs, 4 different time horizons for each combination). Should our team find it not possible to complete the necessary experiments across all of the experiments represented in Table 3 of our selected paper, we will reduce the number of experiments to focus solely on the ones directly related to our hypotheses described in the beginning of this notebook (i.e., reduce the number of combinations of interest to 4: ABP alone, ABP+EEG, ABP+ECG, ABP+ECG+EEG). This will result in a new total of 16 experiments to run.

Planned ablations¶

Our proposal included a collection of potential ablations to be investigated:

  • Remove ResNet skip connection
  • Reduce # of residual blocks from 12 to 6
  • Reduce # of residual blocks from 12 to 1
  • Eliminate dropout from residual block
  • Max pooling configuration
    • smaller size/stride
    • eliminate max pooling

Given the amount of time required to conduct each experiment, our team intends to choose only a small number of ablations from this set. Further, we only intend to perform ablation analysis against the best performing signal combination and time horizon from the reproduction experiments. In order words, we intend to perform ablation analysis against the following training combinations, and only against the models trained with data measured 3 minutes prior to an IOH event:

  • ABP alone
  • ABP + ECG
  • ABP + EEG
  • ABP + ECG + EEG

Time and GPU resource permitting, we will complete a broader range of experiments. For additional details, please see the section below titled "Plans for next phase".

Nature of reproduced results¶

Our team intends to address the manner in which the experimental results align with the published results in the paper in the final submission of this report. The amount of time required to complete model training and result analysis during the preparation of the Draft notebook was not sufficient to complete a large number of experiments.

What was easy? What was difficult?¶

The difficult aspect of the preparation of this draft involved the data preprocessing.

  • First, the source data is unlabelled, so our team was responsible for implementing analysis methods for identifying positive (IOH event occurred) and negative (IOH event did not occur) by running a lookahead analysis of our input training set.
  • Second, the volume of raw data is in excess of 90GB. A non-trivial amount of compute was required to minify the input data to only include the data tracks of interest to our experiments (i.e., ABP, ECG, and EEG tracks).
  • Third, our team found it difficult to trace back to the definition of the jSQI signal quality index referenced in the paper. Multiple references through multiple papers needed to be traversed to understand which variant of the quality index
    • The only available source code related to the signal quality index as referenced by our paper in [5]. Source code was not directly linked from the paper, but the GitHub repository for the corresponding author for reference [5] did result in the identification of MATLAB source code for the signal quality index as described in the referenced paper. That code is available here: https://github.com/cliffordlab/PhysioNet-Cardiovascular-Signal-Toolbox/tree/master/Tools/BP_Tools
    • Our team had insufficient time to port this signal quality index to Python for use in our investigation, or to setup a MATLAB environment in which to assess our source data using the above MATLAB functions, but we expect to complete this as part of our final report.

Suggestions to paper author¶

The most notable suggestion would be to correct the hyperparameters published in Supplemental Table 1. Specifically, the output size for residual blocks 11 and 12 for the ECG and ABP data sets was 496x6. This is a typo, and should read 469x6. This typo became apparent when operating the size down operation within Residual Block 11 and recognizing the tensor dimensions were misaligned.

Additionally, more explicit references to the signal quality index assessment tools should be added. Our team could not find a reference to the MATLAB source code as described in reference [3], and had to manually discover the GitHub profile for the lab of the corresponding author of reference [3] in order to find MATLAB source that corresponded to the metrics described therein.

Plans for next phase¶

Our team plans to accomplish the following goals in service of preparing the Final Report:

  • Implement the jSQI filter to remove any training data with aberrent signal quality per the threshold defined in our original paper.
  • Execute the following experiments:
    • Measure predictive quality of the model trained solely with ABP data at 3 minutes prior to IOH events.
    • Measure predictive quality of the model trained with ABP+ECG data at 3 minutes prior to IOH events.
    • Measure predictive quality of the model trained with ABP+EEG data at 3 minutes prior to IOH events.
    • Measure predictive quality of the model trained with ABP+ECG+EEG data at 3 minutes prior to IOH events.
  • Gather our measures for these experiments and perform a comparison against the published results from our selected paper and determine whether or not we are succesfully reproducing the results outlined in the paper.
  • Ablation analysis:
    • Execute the following ablation experiments:
      • Repeat the four experiments described above while reducing the numnber of residual blocks in the model from 12 to 6.
  • Time- and/or GPU-resource permitting, we will complete the remaining 24 experiments as described in the paper:
    • Measure predictive quality of the model trained solely with ABP data at 5, 10, and 15 minutes prior to IOH events.
    • Measure predictive quality of the model trained with ABP+ECG data at 5, 10, and 15 minutes prior to IOH events.
    • Measure predictive quality of the model trained with ABP+EEG data at 5, 10, and 15 minutes prior to IOH events.
    • Measure predictive quality of the model trained with ABP+ECG+EEG data at 5, 10, and 15 minutes prior to IOH events.
    • Measure predictive quality of the model trained solely with ECG data at 3, 5, 10, and 15 minutes prior to IOH events.
    • Measure predictive quality of the model trained solely with EEG data at 3, 5, 10, and 15 minutes prior to IOH events.
    • Measure predictive quality of the model trained with ECG+EEG data at 3, 5, 10, and 15 minutes prior to IOH events.
    • Additional ablation experiments:
      • For the four core experiments (ABP, ABP+ECG, ABP+EEG, ABP+ECG+EEG each trained on event data occurring 3 minutes prior to IOH events), perform the following ablations:
        • Repeat experiment while eliminating dropout from every residual block
        • Repeat experiment while removing the skip connection from every residual block
        • Repeat the four experiments described above while reducing the numnber of residual blocks in the model from 12 to 1.

References¶

  1. Jo Y-Y, Jang J-H, Kwon J-m, Lee H-C, Jung C-W, Byun S, et al. “Predicting intraoperative hypotension using deep learning with waveforms of arterial blood pressure, electroencephalogram, and electrocardiogram: Retrospective study.” PLoS ONE, (2022) 17(8): e0272055 https://doi.org/10.1371/journal.pone.0272055
  2. Hatib, Feras, Zhongping J, Buddi S, Lee C, Settels J, Sibert K, Rhinehart J, Cannesson M “Machine-learning Algorithm to Predict Hypotension Based on High-fidelity Arterial Pressure Waveform Analysis” Anesthesiology (2018) 129:4 https://doi.org/10.1097/ALN.0000000000002300
  3. Bao, X., Kumar, S.S., Shah, N.J. et al. "AcumenTM hypotension prediction index guidance for prevention and treatment of hypotension in noncardiac surgery: a prospective, single-arm, multicenter trial." Perioperative Medicine (2024) 13:13 https://doi.org/10.1186/s13741-024-00369-9
  4. Lee, HC., Park, Y., Yoon, S.B. et al. VitalDB, a high-fidelity multi-parameter vital signs database in surgical patients. Sci Data 9, 279 (2022). https://doi.org/10.1038/s41597-022-01411-5
  5. Li Q., Mark R.G. & Clifford G.D. "Artificial arterial blood pressure artifact models and an evaluation of a robust blood pressure and heart rate estimator." BioMed Eng OnLine. (2009) 8:13. pmid:19586547 https://doi.org/10.1186/1475-925X-8-13
  6. Park H-J, "VitalDB Python Example Notebooks" GitHub Repository https://github.com/vitaldb/examples/blob/master/hypotension_art.ipynb

Public GitHub Repo (5)¶

  • Publish your code in a public repository on GitHub and attach the URL in the notebook.
  • Make sure your code is documented properly.
    • A README.md file describing the exact steps to run your code is required.
    • Check “ML Code Completeness Checklist” (https://github.com/paperswithcode/releasing-research-code)
    • Check “Best Practices for Reproducibility” (https://www.cs.mcgill.ca/~ksinha4/practices_for_reproducibility/)

Video Presentation (Requirements from Rubrik)¶

Walkthrough of the notebook, no need to make slides. We expect a well-timed, well-presented presentation. You should clearly explain what the original paper is about (what the general problem is, what the specific approach taken was, and what the results claimed were) and what you encountered when you attempted to reproduce the results. You should use the time given to you and not too much (or too little).

  • <= 4 mins
  • Explain the general problem clearly
  • Explain the specific approach taken in the paper clearly
  • Explain reproduction attempts clearly
In [115]:
print(f'All done!')
All done!